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

基本上,我在做一些数据分析。我以 numpy.ndarray 的形式读入数据集,其中一些值丢失了(可能只是没有出现,可能是 NaN,也可能是一个写有“ NA”的字符串)。

我要清除包含这样的条目的所有行。我怎么才能用一个麻木的 Ndarray 做到这一点?

80965 次浏览
>>> 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.]])

and reassign this to a.

Explanation: np.isnan(a) returns a similar array with True where NaN, False elsewhere. .any(axis=1) reduces an m*n array to n with an logical or operation on the whole rows, ~ inverts True/False and True0 chooses just the rows from the original array, which have True within the brackets.