繁体   English   中英

从三维数组中删除NaN行

[英]Removing NaN rows from a three dimensional array

如何使用索引从下面的数组中删除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.]])

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

你需要重塑:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM