基本上,我正在做一些数据分析。我在数据集中读取numpy.ndarray并且缺少一些值(通过不存在,NaN
或者写成“NA
”字符串。
我想要清除包含这样的任何条目的所有行。我怎么用numpy ndarray做到这一点?
答案 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
,其中NaN
,False
位于其他地方。 .any(axis=1)
将m*n
数组缩减为n
,对整行or
反转~
和True/False
进行逻辑a[ ]
操作只选择原始数组中的行,括号内有True
。