So beheben sie: runtimewarning: ungültiger wert in double_scalars gefunden
Ein Fehler, der in Python auftreten kann, ist:
runtimewarning: invalid value encountered in double_scalars
Dieser Fehler tritt auf, wenn Sie versuchen, eine mathematische Operation mit extrem kleinen oder extrem großen Zahlen durchzuführen und Python als Ergebnis einfach einen NaN-Wert generiert.
Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.
So reproduzieren Sie den Fehler
Angenommen, wir versuchen, die folgende mathematische Operation mit zwei NumPy-Arrays durchzuführen:
import numpy as np #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (-3*array1). sum () / np. exp (-3*array2). sum () RuntimeWarning: invalid value encountered in double_scalars
Wir erhalten eine RuntimeWarning , da das Ergebnis im Nenner extrem nahe bei Null liegt.
Das bedeutet, dass die Antwort auf das Divisionsproblem extrem groß sein wird und Python nicht in der Lage ist, einen so großen Wert zu verarbeiten.
So beheben Sie den Fehler
Typischerweise lässt sich diese Art von Fehler beheben, indem man eine spezielle Funktion aus einer anderen Python-Bibliothek verwendet, die extrem kleine oder extrem große Werte in Berechnungen verarbeiten kann.
In diesem Fall können wir die Funktion logsumexp() aus der SciPy-Bibliothek verwenden:
import numpy as np from scipy. special import logsumexp #define two NumPy arrays array1 = np. array ([[1100, 1050]]) array2 = np. array ([[1200, 4000]]) #perform complex mathematical operation n.p. exp (logsumexp(-3*array1) - logsumexp(-3*array2)) 2.7071782767869983e+195
Beachten Sie, dass das Ergebnis extrem groß ist, wir jedoch keine Fehlermeldungen erhalten, da wir eine spezielle mathematische Funktion aus der SciPy-Bibliothek verwendet haben, die für die Verarbeitung dieser Zahlentypen entwickelt wurde.
In vielen Fällen lohnt es sich, in der SciPy-Bibliothek nach speziellen Funktionen zu suchen, die extreme mathematische Operationen bewältigen können, da diese Funktionen speziell für das wissenschaftliche Rechnen konzipiert sind.
Hinweis : Die vollständige Online-Dokumentation für die Funktion logsumexp() finden Sie hier .
Zusätzliche Ressourcen
Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:
So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden