Подтвердить что ты не робот

"isnotnan" функциональность в numpy, может ли это быть более pythonic?

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

>>> 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

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

4b9b3361

Ответ 1

a = a[~np.isnan(a)]

Ответ 2

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

np.isfinite(a)

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

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