如何使用索引从下面的数组中删除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.]])
如何使用从第一个命令获得的索引删除想要的行?
答案 0 :(得分:0)
您需要重塑:
a[~np.isnan(a).any(axis=2)].reshape(a.shape[0], -1, a.shape[2])
但是请注意,要获得新的3D阵列,每个2D子阵列的NaN行数应该相同。