fonctionnalité « isnotnan » dans numpy, cela peut-il être plus pythonique?
Question
Je besoin d'une fonction qui renvoie des valeurs non NaN d'un tableau. Actuellement, je fais de cette façon:
>>> 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
S'il vous plaît part si vous connaissez une meilleure façon, Merci
La solution
a = a[~np.isnan(a)]
Autres conseils
Vous testez actuellement tout ce qui est pas NaN et MTRW a la bonne façon de le faire. Si vous êtes intéressé à tester pour les nombres finis (n'est pas NaN et n'est pas INF) alors vous n'avez pas besoin d'inversion et peut utiliser:
np.isfinite(a)
Plus pythonique et natif, d'une lecture facile, et souvent quand vous voulez éviter NaN vous voulez aussi éviter INF dans mon expérience.
Juste pensé que je toss que là-bas pour les gens.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow