Dies ist ein Lernmemo für Python.
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.
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]).
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.
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