仅屏蔽非NaN值(Python)

时间:2019-06-07 15:21:08

标签: python numpy matrix

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

代码,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

1 个答案:

答案 0 :(得分:1)

我想你想要

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

请注意使用np.isnan(即,注意np.NaN == np.NaNFalse!)和 not ~)运算符。换句话说,这样做是“在数组tt不是NaN的地方屏蔽”。祝你好运。