“Isnotnan” funcionalidad en numpy, puede esto ser más Pythonic?
Pregunta
I necesita una función que devuelve valores no NaN de una matriz. Actualmente estoy haciendo de esta manera:
>>> 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, comparta si sabe una mejor manera, Gracias
Solución
a = a[~np.isnan(a)]
Otros consejos
En este momento está realizando una prueba de todo lo que no es NaN y MTRW tiene la forma correcta de hacer esto. Si usted está interesado en la prueba de los números finitos (no es NaN y no es INF), entonces usted no necesita una inversión y se puede utilizar:
np.isfinite(a)
Más Pythonic y nativa, una lectura fácil, y muchas veces cuando se quiere evitar NaN también desea evitar INF en mi experiencia.
Simplemente pensé que había que tirar hacia fuera allí para la gente.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow