我有一个类似于下面的NumPy矩阵:

[[182 93 107 ..., nan nan -1]
 [182 93 107 ..., nan nan -1]
 [182 93 110 ..., nan nan -1]
 ...,
 [188 95 112 ..., nan nan -1]
 [188 97 115 ..., nan nan -1]
 [188 95 112 ..., nan nan -1]]

我想从上述矩阵中删除仅涉及nan值的列。

我怎样才能做到这一点?谢谢。

最佳答案

假设您的数组现在是float,则可以标识所有为NaN的列,并使用奇特索引来检索其他列:

d
array([[ 182.,   93.,  107.,   nan,   nan,   -1.],
       [ 182.,   93.,  107.,    4.,   nan,   -1.],
       [ 182.,   93.,  110.,   nan,   nan,   -1.],
       [ 188.,   95.,  112.,   nan,   nan,   -1.],
       [ 188.,   97.,  115.,   nan,   nan,   -1.],
       [ 188.,   95.,  112.,   nan,   nan,   -1.]])


d[:,~np.all(np.isnan(d), axis=0)]

array([[ 182.,   93.,  107.,   nan,   -1.],
       [ 182.,   93.,  107.,    4.,   -1.],
       [ 182.,   93.,  110.,   nan,   -1.],
       [ 188.,   95.,  112.,   nan,   -1.],
       [ 188.,   97.,  115.,   nan,   -1.],
       [ 188.,   95.,  112.,   nan,   -1.]])

09-26 04:04
查看更多