numpy.isclose#

numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[原始碼]#

傳回布林陣列,其中兩個陣列在容差範圍內逐元素相等。

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

警告

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

參數:
a, barray_like

要比較的輸入陣列。

rtolarray_like

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

atolarray_like

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

equal_nanbool

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

傳回值:
yarray_like

傳回布林陣列,表示 ab 在給定容差範圍內是否相等。如果 ab 都是純量,則傳回單一布林值。

另請參閱

allclose
math.isclose

注意事項

對於有限值,isclose 使用以下方程式來測試兩個浮點值是否相等。

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

與內建的 math.isclose 不同,上述方程式在 ab 中不對稱 – 它假設 b 是參考值 – 因此 isclose(a, b) 可能與 isclose(b, a) 不同。

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

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

範例

>>> import numpy as np
>>> np.isclose([1e10,1e-7], [1.00001e10,1e-8])
array([ True, False])
>>> np.isclose([1e10,1e-8], [1.00001e10,1e-9])
array([ True, True])
>>> np.isclose([1e10,1e-8], [1.0001e10,1e-9])
array([False,  True])
>>> np.isclose([1.0, np.nan], [1.0, np.nan])
array([ True, False])
>>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
array([ True, True])
>>> np.isclose([1e-8, 1e-7], [0.0, 0.0])
array([ True, False])
>>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0)
array([False, False])
>>> np.isclose([1e-10, 1e-10], [1e-20, 0.0])
array([ True,  True])
>>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0)
array([False,  True])