Funcionalidade "Isnotnan" em Numpy, isso pode ser mais pitônico?
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
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