Wie kann ich NaN-Werte aus einem NumPy-Array entfernen?
[1, 2, NaN, 4, NaN, 8] [1, 2, 4, 8]
Wie kann ich NaN-Werte aus einem NumPy-Array entfernen?
[1, 2, NaN, 4, NaN, 8] [1, 2, 4, 8]
Um NaN-Werte aus einem NumPy-Array zu entfernen x
:
x = x[~numpy.isnan(x)]
Die innere Funktion numpy.isnan
gibt ein boolesches/logisches Array zurück, das den Wert True
überall dort, wo x
ist eine Nicht-Zahl. Da wir das Gegenteil wollen, verwenden wir den Operator logisch-nicht ~
um ein Array zu erhalten mit True
s überall, dass x
ist eine gültige Nummer.
Schließlich verwenden wir dieses logische Array als Index für das ursprüngliche Array x
um nur die Nicht-NaN-Werte abzurufen.
Versuchen Sie dies:
import math
print [value for value in x if not math.isnan(value)]
Weitere Informationen finden Sie unter Auflistung von Zusammenfassungen .
@jmetz's Antwort ist wahrscheinlich diejenige, die die meisten Leute brauchen; allerdings ergibt sie ein eindimensionales Array, was es z.B. unbrauchbar macht, ganze Zeilen oder Spalten in Matrizen zu entfernen.
Dazu sollte man das logische Array auf eine Dimension reduzieren und dann das Zielarray indizieren. Im Folgenden werden zum Beispiel Zeilen entfernt, die mindestens einen NaN-Wert haben:
x = x[~numpy.isnan(x).any(axis=1)]
Siehe mehr Details aquí .
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.