Während ich meinen Code ausführe, erhalte ich diese Warnungen sporadisch immer in Vierergruppen. Ich habe versucht, die Quelle zu finden, indem ich Debug-Meldungen vor und nach bestimmten Anweisungen platzierte, um ihren Ursprung genau zu bestimmen.
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Warning: invalid value encountered in double_scalars
Ist dies eine Numpy-Warnung und was ist ein doppelter Skalar?
Von Numpy benutze ich
min(), argmin(), mean() and random.randn()
Ich benutze auch Matplotlib
python
numpy
warnings
matplotlib
Theodor
quelle
quelle
double
. Es wird Skalar genannt, um es in numpy von doppelten Arrays zu unterscheiden.Antworten:
Es sieht aus wie ein Gleitkomma-Berechnungsfehler. Überprüfen Sie die Funktion numpy.seterr , um weitere Informationen darüber zu erhalten, wo dies geschieht.
quelle
numpy.seterr('raise')
diese Option, um bei Fehlern eine Ausnahme auszulösen.In meinem Fall fand ich heraus, dass es eine Division durch Null war.
quelle
ZeroDivisionError
?nan
eine gültige IEEE-Standardantwort auf die Division durch Null ist.Manchmal erzeugen NaNs oder Nullwerte in Daten diesen Fehler mit Numpy. Wenn Sie Daten beispielsweise aus einer CSV-Datei oder ähnlichem aufnehmen und dann die Daten mit Numpy-Arrays bearbeiten, kann das Problem auf Ihre Datenerfassung zurückzuführen sein. Sie können versuchen, Ihrem Code einen kleinen Datensatz mit bekannten Werten zuzuführen und festzustellen, ob Sie das gleiche Ergebnis erhalten.
quelle
Ein Array mit der Größe Null, das übergeben wird,
numpy.mean
löst diese Warnung aus (wie in mehreren Kommentaren angegeben).Für einige andere Kandidaten:
median
Diese Warnung wird auch für Arrays mit der Größe Null ausgelöst.andere Kandidaten erheben diese Warnung nicht:
min,argmin
beide erhöhenValueError
auf leerem Arrayrandn
nimmt*arg
; usingrandn(*[])
gibt eine einzelne Zufallszahl zurückstd,var
Rückkehrnan
auf ein leeres Arrayquelle
Ich bin auf ein ähnliches Problem gestoßen - Ungültiger Wert in ... Nachdem ich viel Zeit damit verbracht habe, herauszufinden, was diesen Fehler verursacht, glaube ich, dass er in meinem Fall auf NaN in meinem Datenrahmen zurückzuführen ist. Schauen Sie sich die Arbeit mit fehlenden Daten in Pandas an.
Keine == Keine Richtig
np.nan == np.nan False
Wenn NaN nicht gleich NaN ist, verursachen arithmetische Operationen wie Division und Multiplikation diesen Fehler.
Einige Dinge, die Sie tun können, um dieses Problem zu vermeiden:
Verwenden Sie pd.set_option, um die Anzahl der Dezimalstellen festzulegen, die in Ihrer Analyse berücksichtigt werden sollen, damit eine unendlich kleine Zahl kein ähnliches Problem auslöst - ('display.float_format', Lambda x: '% .3f'% x).
Verwenden Sie df.round (), um die Zahlen zu runden, damit Panda die verbleibenden Ziffern aus der Analyse entfernt. Und am wichtigsten,
Setze NaN auf Null df = df.fillna (0). Seien Sie vorsichtig, wenn das Füllen von NaN mit Null nicht für Ihre Datensätze gilt, da dies den Datensatz als Null behandelt, sodass sich auch N im Mittelwert, Standard usw. ändert.
quelle
Wenn Sie mit CSV-Importen arbeiten, versuchen Sie, df.dropna () zu verwenden, um alle derartigen Warnungen oder Fehler zu vermeiden.
quelle
Ich erzähle dies, während ich rechnete
np.var(np.array([]))
.np.var
teilt die Größe des Arrays, die in diesem Fall Null ist.quelle