„Isnotnan“ Funktionalität in numpy, kann dies mehr pythonic sein?
Frage
ich brauche eine Funktion, dass die Renditen nicht-NaN-Werte aus einem Array. Ich kann es auf diese Weise zur Zeit tue:
>>> 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
Bitte teilen, wenn Sie einen besseren Weg wissen, Danke
Lösung
a = a[~np.isnan(a)]
Andere Tipps
Sie testen derzeit für alles, was nicht NaN ist und MTRW hat den richtigen Weg, dies zu tun. Wenn Sie bei der Prüfung für die endlichen Zahlen interessiert (nicht NaN und ist nicht INF), dann brauchen Sie keine Inversion und verwenden können:
np.isfinite(a)
Weitere pythonic und nativem, leicht zu lesen, und oft, wenn Sie wollen NaN vermeiden wollen Sie auch INF in meiner Erfahrung zu vermeiden.
Nur dachte ich, dass da draußen für Leute werfen würde.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow