如何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.]]])
Run Code Online (Sandbox Code Playgroud)
我使用命令获取要删除的行的索引
a[np.isnan(a).any(axis=2)]
Run Code Online (Sandbox Code Playgroud)
但是使用我通常在 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.]])
Run Code Online (Sandbox Code Playgroud)
如何使用从我的第一个命令获得的索引删除我想要的行?
你需要重塑:
a[~np.isnan(a).any(axis=2)].reshape(a.shape[0], -1, a.shape[2])
Run Code Online (Sandbox Code Playgroud)
但请注意,每个 2D 子数组的 NaN 行数应该相同才能获得新的 3D 数组。