Ignorieren Division durch 0 Warnung in NumPy
Habe ich eine Funktion für die Statistik Fragen:
import numpy as np
from scipy.special import gamma as Gamma
def Foo(xdata):
...
return x1 * (
( #R is a numpy vector
( ((R - x2)/beta) ** (x3 -1) ) *
( np.exp( - ((R - x2) / x4) ) ) /
( x4 * Gamma(x3))
).real
)
Manchmal bekomme ich von der shell die folgende Warnung:
RuntimeWarning: divide by zero encountered in...
Ich die numpy isinf
Funktion zum korrigieren der Ergebnisse der Funktion in andere Dateien, so brauche ich nicht diese Warnung.
Gibt es eine Möglichkeit, um die Meldung zu ignorieren?
In anderen Worten, ich will nicht die Schale, um diese Nachricht drucken.
Möchte ich nicht deaktivieren, alle python-Warnungen, nur dieses eine.
- Sie konnte nur fangen es und ignorieren es, wenn Sie nicht brauchen, um sich zu erholen.
- Sie können immer
try... except ZeroDivisionError
(oder was auch immer Fehler geworfen wird) - mögliche Duplikate von How to disable-python-Warnungen
- es wird kein Fehler geworfen. die OP ist immer eine Warnung.
- marsh will ich nicht deaktivieren, alle Achtung. Nur diese, wenn es möglich ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie deaktivieren Sie die Warnung mit
numpy.seterr
. Setzen Sie diese, bevor Sie die mögliche division durch null:Werde, dass deaktivieren zero division Warnungen Global. Wenn Sie nur wollen, deaktivieren Sie Sie, für ein wenig, können Sie
numpy.errstate
in einemwith
Klausel:Für eine null-durch-null-division (unbestimmte Ergebnisse in einem NaN), wird der Fehler-Verhalten hat sich geändert mit numpy version 1.12.0: dieser wird nun als "ungültig", während zuvor war es "teilen".
So, wenn es gibt eine chance, dass Sie Ihre Zähler kann null sein, wie auch, verwenden
oder
Finden Sie unter "Kompatibilität" Abschnitt in der release notes, letzter Absatz vor dem "Neuen Features" Abschnitt:
Könnten Sie auch
numpy.divide
für die division. So dass Sie nicht haben, um explizit deaktivieren Sie Warnungen.