np.isclose(或者np.allclose)檢查兩個陣列是否大致相等。 但如果輸入的形狀不一樣,它們都會引發一個例外。 我想知道是否有一個庫函式可以用來檢查兩個任意陣列的 "近似 "相等? 例如,類似于
def allclose(x, y, *args, **kwargs)。
return x.shape == y.shape and np.allclose(x, y, *args, **kwargs)
事實上,對于 "精確 "的平等 np.array_equal已經做了這個作業(通過在不同大小的陣列上回傳False,而不是引發一個例外)。
uj5u.com熱心網友回復:
沒有這樣一個函式,而且有一個特殊的原因:它允許廣播。這意味著你可以比較兩個不同形狀的陣列,只要它們是可廣播的。
a = np.array([[1, 2], [1, 2],)
b = np.array([1, 2])
np.isclose(a, b) # row-wise comparison # array([ [ True, True],)
# [ True, True]])
np.isclose(a, b[:, None]) # column-wise comparison
# array([[ True, False],)
# [False, True]])
因此,如果你的函式允許廣播,你想知道兩個陣列是否不同,或者只是形狀不兼容。
所以如果你想保留廣播性,我建議
def allclose(x, y, *args, **kwargs)。
try:
return np.allclose(x, y, *args, **kwargs)
except ValueError。
return False
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334243.html
標籤:
