Ich muss vergleichen, ob zwei Numpy-Arrays einer gewünschten Genauigkeit entsprechen, wobei Nanowerte ignoriert werden.
Zum Beispiel:
a = [1,nan,3,nan]
b = [1,0.2,3,4.1]
Sollte den Test bestehen.
Ich habe versucht, die Funktion numpy.all zu verwenden, aber ich verstehe, dass zwei identische Arrays erwartet werden und ich eine gewisse Toleranz haben muss, da sich die Float-Werte geringfügig unterscheiden können.
Wie kann ich das erreichen?
Verwenden Sie np.allclose
und np.isnan
:
mask = ~(np.isnan(a) | np.isnan(b))
np.allclose(a[mask], b[mask])
Dies behandelt +/- inf
und berücksichtigt kleine Unterschiede korrekt . Absolute und relative Toleranzen können als Parameter für angegeben werden allclose
.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen