【问题标题】:Masking only non-NaN values (Python)仅屏蔽非 NaN 值(Python)
【发布时间】:2019-06-07 15:21:08
【问题描述】:

我有一个多维矩阵,想要屏蔽所有不是 NaN 值的值。我知道有一个无效的掩码可以掩码 NaN 值,但我想要相反的 - 只想保留 NaN 值。我试过用 where 但不确定我写的是否正确。

代码,tt & tt2 产生(相同的东西)

tt = np.ma.array([[[0,1,2],[3,np.nan,5],[6,7,8]], 
             [[10,11,12],[13,np.nan,15],[16,17,18]],
              [[20,21,22],[23,np.nan,25],[26,27,28]]])
tt2 = np.ma.where(tt == np.nan, tt == np.nan, tt)

[[[ 0.  1.  2.]
  [ 3. nan  5.]
  [ 6.  7.  8.]]

  [[10. 11. 12.]
   [13. nan 15.]
   [16. 17. 18.]]

  [[20. 21. 22.]
   [23. nan 25.]
   [26. 27. 28.]]]

期望的结果: 所有要屏蔽的整数(--),只留下Nan

【问题讨论】:

    标签: python numpy matrix


    【解决方案1】:

    我想你想要:

    tt2 = np.ma.masked_where(~np.isnan(tt), tt)
    

    注意np.isnan 的使用(即注意np.NaN == np.NaNFalse!)和not (~) 运算符。换句话说,这会“掩盖数组tt 不是NaN 的位置”。祝你好运。

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      相关资源
      最近更新 更多