【问题标题】:Removing "nan" values from a numpy array从 numpy 数组中删除“nan”值
【发布时间】:2017-11-06 13:40:18
【问题描述】:

我有一个 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))]

但这只会将我的“nan”替换为“False”。

我也尝试了以下方法:

ar3 = ar2[~np.isnan(ar2)]

但它会将我的 2d numpyarray 转换为 1d numpyarray。

我知道一个解决方案是将我的 numpy 数组转换为数据框,然后删除“nan”值,然后将其转换回 numpy 数组,但我想知道是否有更直接的方法,仅在 numpy 包中(除了制作一个巨大的“for”循环并迭代所有内容)。谢谢。

【问题讨论】:

  • 这是否意味着您寻求delete 那些行?如果是,有一个numpy.delete 函数可以与mask 一起使用。
  • 你的阵列不是一维的吗?看起来确实是这样,因为 ar3 = ar2[~np.isnan(ar2)] 正在做正确的事情

标签: python arrays numpy


【解决方案1】:

没关系,找到了:

ar3=ar2[~np.isnan(ar2).any(axis=1)]

还是谢谢

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2019-12-22
    • 2015-06-08
    • 2015-05-21
    • 2012-07-22
    • 2016-12-10
    • 2016-08-15
    • 1970-01-01
    相关资源
    最近更新 更多