Маскирование только не-NaN значений (Python) - PullRequest
0 голосов
/ 07 июня 2019

У меня есть многомерная матрица, и я хочу замаскировать все значения, которые НЕ являются значениями 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 Ответ

1 голос
/ 07 июня 2019

Я думаю, что вы хотите:

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

Обратите внимание на использование np.isnan (то есть обратите внимание, что np.NaN == np.NaN это False!), А не (~) оператор.Другими словами, это делает «маску, где массив tt не является NaN».Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...