[PYTHON] Vermeiden Sie die Warnung [ungültiger Wert in true_divide], wenn Sie durch Null geteilt werden

Einführung

Dies ist ein Lernmemo für Python.

Problem

Wenn das von numpy erstellte Array Nullen enthält, wird durch Teilen durch 0 eine Warnung ausgegeben. (Natürlich)

problem.py


import numpy as np

A = np.array([0, 1, 2])
B = np.array([0, 1, 1])

print(A/B)
Ausgabe> RuntimeWarning: invalid value encountered in true_divide
  print(A/B)
[nan  1.  2.]

Eine Warnung wird ausgegeben, und der durch Null geteilte Teil ist nan.

Lösungen

solved.py


import numpy as np

A = np.array([0, 1, 2], dtype=float)
B = np.array([0, 1, 1], dtype=float)

C = np.divide(A, B, out=np.zeros_like(A), where=B!=0)
print(C)
Ausgabe> [0.  1.  2.]

np.zeros_like (A) gibt ein mit Nullen gefülltes Array mit derselben Form wie A zurück. Sie können auch np.divide (A, B) verwenden, um A durch B zu teilen. Laut Dokumentation ist out der Ort, an dem die Ergebnisse gespeichert werden, und wo die Option, Bedingungen für alle Eingaben anzugeben. 0 wird dem Berechnungsergebnis der Stelle zugewiesen, an der false ist (in diesem Fall B [0]).

abschließend

Sicher, die Warnung ist weg, aber sie kann helfen, also frage ich mich, ob es wirklich eine gute Lösung ist.

Danke für Ihren Besuch. Wenn Sie Vorschläge haben, hinterlassen Sie diese bitte im Kommentarbereich.

Referenz-URL

https://stackoverflow.com/questions/26248654/how-to-return-0-with-divide-by-zero (abgerufen am 24. Februar 2020) https://docs.scipy.org/doc/numpy/reference/generated/numpy.divide.html(2020年2月24日閲覧) https://docs.scipy.org/doc/numpy/reference/generated/numpy.zeros_like.html(2020年2月24日閲覧)

Recommended Posts

Vermeiden Sie die Warnung [ungültiger Wert in true_divide], wenn Sie durch Null geteilt werden
[Numpy] Vermeiden Sie die Warnung vor 0 Teilung
Suchen Sie nach dem Wert der Instanz in der Liste
Multiplizieren Sie den Wert der x-Achse mit n, wenn Sie mit Pylab zeichnen
Hinweise zur Farbfärbung im Matplotlib-Streudiagramm
Seien Sie vorsichtig, wenn Sie den Standardargumentwert in der Python 3-Serie angeben
Was tun, wenn der Werttyp in Python nicht eindeutig ist?