numpy.allclose#

numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[source]#

若兩個陣列在容 tolerance 範圍內逐元素相等,則回傳 True。

容 tolerance 值為正數,通常是非常小的數字。相對差異 (rtol * abs(b)) 和絕對差異 atol 會加總在一起,以便與 ab 之間的絕對差異進行比較。

警告

預設的 atol 不適用於比較量級遠小於 1 的數字 (請參閱「注意事項」)。

如果 NaN 位於相同位置且 equal_nan=True,則 NaN 會被視為相等。如果 Inf 位於相同位置且在兩個陣列中符號相同,則 Inf 會被視為相等。

參數:
a, b類陣列

要比較的輸入陣列。

rtol類陣列

相對容 tolerance 參數 (請參閱「注意事項」)。

atol類陣列

絕對容 tolerance 參數 (請參閱「注意事項」)。

equal_nan布林值

是否將 NaN 視為相等進行比較。若為 True,則輸出陣列中 a 中的 NaN 會被視為等於 b 中的 NaN。

回傳值:
allclose布林值

若兩個陣列在給定容 tolerance 範圍內相等,則回傳 True;否則回傳 False。

另請參閱

isclose, all, any, equal

注意事項

如果以下方程式逐元素為 True,則 allclose 會回傳 True。

absolute(a - b) <= (atol + rtol * absolute(b))

上述方程式在 ab 中不對稱,因此在少數情況下,allclose(a, b) 可能與 allclose(b, a) 不同。

當參考值 b 的量級小於 1 時,atol 的預設值並不適用。例如,a = 1e-9b = 2e-9 不太可能被視為「接近」,但使用預設設定時,allclose(1e-9, 2e-9)True。請務必根據手邊的使用案例選擇 atol,特別是針對定義閾值,低於該閾值時,a 中的非零值將被視為「接近」b 中的極小值或零值。

ab 的比較使用標準廣播,這表示 ab 不需具有相同的形狀,allclose(a, b) 才能評估為 True。equal 也是如此,但 array_equal 則否。

allclose 未針對非數值資料型別定義。bool 基於此目的被視為數值資料型別。

範例

>>> import numpy as np
>>> np.allclose([1e10,1e-7], [1.00001e10,1e-8])
False
>>> np.allclose([1e10,1e-8], [1.00001e10,1e-9])
True
>>> np.allclose([1e10,1e-8], [1.0001e10,1e-9])
False
>>> np.allclose([1.0, np.nan], [1.0, np.nan])
False
>>> np.allclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
True