wake-up-neo.com

'Ungültiger Wert in double_scalars' Warnung, möglicherweise numpy

Während ich meinen Code ausführe, werden diese Warnungen immer sporadisch in Vierergruppen angezeigt. Ich habe versucht, die Quelle zu lokalisieren, indem ich Debug-Meldungen vor und nach bestimmten Anweisungen platziert habe, 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 das eine Numpy-Warnung und was ist ein doppelter Skalar?

Von Numpy benutze ich

min(), argmin(), mean() and random.randn()

Ich benutze auch Matplotlib

55
Theodor

Es sieht aus wie ein Gleitkomma-Berechnungsfehler. Überprüfen Sie die Funktion numpy.seterr , um weitere Informationen darüber zu erhalten, wo dies geschieht.

42
eumiro

In meinem Fall stellte ich fest, dass es sich um eine Division durch Null handelte.

42
Volod

Manchmal erzeugen NaNs oder Nullwerte in Daten diesen Fehler bei Numpy. Wenn Sie beispielsweise Daten aus einer CSV-Datei oder Ähnlichem aufnehmen und dann die Daten mithilfe von Numpy-Arrays verarbeiten, kann das Problem auf die Datenaufnahme zurückzuführen sein. Sie können versuchen, Ihrem Code einen kleinen Datensatz mit bekannten Werten zuzuweisen und zu prüfen, ob Sie das gleiche Ergebnis erhalten.

10
Jeff

Ein Array mit der Größe Null, das an numpy.mean Übergeben wird, löst diese Warnung aus (wie in mehreren Kommentaren angegeben).

Für einige andere Kandidaten:

  • median löst diese Warnung auch bei Arrays mit der Größe Null aus.

andere Kandidaten werfen diese Warnung nicht vor:

  • min,argmin Beide werfen ValueError auf ein leeres Array
  • randn nimmt *arg; using randn(*[]) gibt eine einzelne Zufallszahl zurück
  • std,var Gibt nan in einem leeren Array zurück
4
Dave

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 es an NaN in meinem Datenframe lag. Sehen Sie sich das Arbeiten mit fehlenden Daten in Pandas an.

Keine == Keine Richtig

np.nan == np.nan Falsch

Wenn NaN nicht gleich NaN ist, wird dieser Fehler durch arithmetische Operationen wie Division und Multiplikation ausgelöst.

Einige Dinge, die Sie tun können, um dieses Problem zu vermeiden:

  1. Verwenden Sie pd.set_option, um die Anzahl der Dezimalstellen festzulegen, die in Ihrer Analyse berücksichtigt werden sollen, damit eine unendliche Zahl kein ähnliches Problem auslöst - ('display.float_format', Lambda x: '% .3f'% x).

  2. Verwenden Sie df.round (), um die Zahlen zu runden, damit Panda die verbleibenden Ziffern aus der Analyse entfernt. Und am wichtigsten,

  3. Setzen Sie 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 dadurch der Datensatz als Null behandelt wird und sich N im Mittelwert, Standard usw. ebenfalls ändert.

1
S_Dhungel

Wenn Sie mit CSV-Importen arbeiten, versuchen Sie, df.dropna () zu verwenden, um solche Warnungen oder Fehler zu vermeiden.

0
Abhinav Bangia

Dies ist mir aufgefallen, als ich np.var(np.array([])) berechnet habe. np.var teilt die Größe des Arrays, die in diesem Fall Null ist.

0
李悦城