Pergunta

Preciso de uma função que retorne valores não-NAN de uma matriz. Atualmente estou fazendo desta maneira:

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

Por favor, compartilhe se você conhece uma maneira melhor, obrigado

Foi útil?

Solução

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

Outras dicas

Atualmente, você está testando qualquer coisa que não seja NAN e o MTRW tem a maneira certa de fazer isso. Se você estiver interessado em testar números finitos (não é NAN e não é INF), não precisa de uma inversão e pode usar:

np.isfinite(a)

Mais pitônico e nativo, uma leitura fácil e, muitas vezes, quando você deseja evitar a NAN, também deseja evitar o INF na minha experiência.

Apenas pensei em jogar isso lá fora para as pessoas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top