"isnotnan" функциональность в numpy, это может быть более питонным? - PullRequest
56 голосов
/ 14 мая 2010

Мне нужна функция, которая возвращает ненулевые значения из массива. В настоящее время я делаю это так:

>>> a = np.array([np.nan, 1, 2])
>>> a
array([ NaN,   1.,   2.])

>>> np.invert(np.isnan(a))
array([False,  True,  True], dtype=bool)

>>> a[np.invert(np.isnan(a))]
array([ 1.,  2.])

Python: 2.6.4 NumPy: 1,3,0

Пожалуйста, поделитесь, если вы знаете лучший способ, Спасибо

Ответы [ 2 ]

106 голосов
/ 14 мая 2010
a = a[~np.isnan(a)]
34 голосов
/ 18 ноября 2013

В настоящее время вы тестируете все, что не является NaN, и у mtrw есть правильный способ сделать это. Если вы заинтересованы в тестировании конечных чисел (это не NaN и не INF), тогда вам не нужна инверсия, и вы можете использовать:

np.isfinite(a)

Более питонский и нативный, легко читаемый, и часто, когда вы хотите избежать NaN, вы также хотите избежать INF в моем опыте.

Просто подумал, что я брошу это для людей.

...