如何删除包含非数字值的numpy.ndarray中的所有行

时间:2012-07-12 13:41:52

标签: python numpy

基本上,我正在做一些数据分析。我在数据集中读取numpy.ndarray并且缺少一些值(通过不存在,NaN或者写成“NA”字符串。

我想要清除包含这样的任何条目的所有行。我怎么用numpy ndarray做到这一点?

1 个答案:

答案 0 :(得分:128)

>>> a = np.array([[1,2,3], [4,5,np.nan], [7,8,9]])
array([[  1.,   2.,   3.],
       [  4.,   5.,  nan],
       [  7.,   8.,   9.]])

>>> a[~np.isnan(a).any(axis=1)]
array([[ 1.,  2.,  3.],
       [ 7.,  8.,  9.]])

并将其重新分配给a

说明:np.isnan(a)返回一个类似的数组True,其中NaNFalse位于其他地方。 .any(axis=1)m*n数组缩减为n,对整行or反转~True/False进行逻辑a[ ]操作只选择原始数组中的行,括号内有True