如何从python中的二维数组中删除“nan”?
我有一个数据集,大小为25000乘13的二维Numpy数组。该数组中有25×7的数字,其余的是NaN。我如何删除所有的Nans?我试过:
test[~np.isnan(test)]
以“test”作为我的数组,并分别尝试(我相信它们是相同的)
test[np.logical_not(np.isnan(test))]
这两种方法都是在操作完成后,将25乘7的数组放入175×1的数组中。
写回答关注邀请回答提问于 2018-07-24
如何从python中的二维数组中删除“nan”?
写回答关注
2 个回答
热门排序
用户回答回答于 2018-07-24
如果你的目标是删除nans以减小数组的大小,我建议将你的数组转换为熊猫数据。
df = pandas.DataFrame(test)
df.dropna(how=‘all’)
df.dropna(axis=‘columns’,how=‘all’)
test = np.array(df)
请注意,这不会删除全NAN,而是完全由它们组成的行和列。
赞0收藏0评论0分享
用户回答回答于 2018-07-24
你的布尔掩码是正确的,但是结果必须是一维的,因为多维数组的子集的形状定义不明确,所以它会自动地将其压平。 它会以一种可预测的方式使它变平。所以,你只需要让它再次成为一个2d数组。
test[~np.isnan(test)].reshape((25,7))应该能达到你想要的结果。