我有一个 numpy 数组,其中某些行专门用“nan”填充,即:
print(ar2[1560])
[ nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan
nan nan nan nan nan nan nan nan nan nan nan nan nan nan nan]
我需要的是从这个 numpy 数组中删除所有这样的行,而不弄乱元素的顺序,即保持排序。我尝试过以下方法:
ar3=ar2[:,~np.all(np.isnan(ar2))]
但这只会用“False”替换我的“nan”。
我也尝试过以下方法:
ar3 = ar2[~np.isnan(ar2)]
但它将我的 2d numpyarray 转换为 1d numpyarray。
我知道解决方案是将我的 numpy 数组转换为数据框,然后删除“nan”值,然后将其转换回 numpy 数组,但我想知道是否有更直接的方法方法,仅在 numpy 包中(而不是制作一个巨大的“for”循环并迭代所有内容)。谢谢。
最佳答案
没关系,找到了:
ar3=ar2[~np.isnan(ar2).any(axis=1)]
还是谢谢
关于python - 从 numpy 数组中删除 "nan"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138318/