从三维数组中删除NaN行

时间:2019-02-24 17:18:18

标签: python numpy

如何使用索引从下面的数组中删除NaN行(因为我需要从其他数组中删除相同的行。

array([[[nan,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.],
        [ 0.,  0.,  0.,  0.]],

       [[ 0.,  0.,  0.,  0.],
        [ 0., nan,  0.,  0.],
        [ 0.,  0.,  0.,  0.]]])

我使用命令获取要删除的行的索引

a[np.isnan(a).any(axis=2)]

但是使用我通常在2D数组上使用的内容不会产生预期的结果,从而丢失了数组结构。

a[~np.isnan(a).any(axis=2)]
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])

如何使用从第一个命令获得的索引删除想要的行?

1 个答案:

答案 0 :(得分:0)

您需要重塑:

a[~np.isnan(a).any(axis=2)].reshape(a.shape[0], -1, a.shape[2])

但是请注意,要获得新的3D阵列,每个2D子阵列的NaN行数应该相同。