numpy.isclose#
- numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[原始碼]#
傳回布林陣列,其中兩個陣列在容差範圍內逐元素相等。
容差值為正值,通常是非常小的數字。相對差異 (rtol * abs(b)) 和絕對差異 atol 加總在一起,以與 a 和 b 之間的絕對差異進行比較。
警告
預設的 atol 不適用於比較量級遠小於 1 的數字 (請參閱「注意事項」)。
- 參數:
- a, barray_like
要比較的輸入陣列。
- rtolarray_like
相對容差參數 (請參閱「注意事項」)。
- atolarray_like
絕對容差參數 (請參閱「注意事項」)。
- equal_nanbool
是否將 NaN 視為相等進行比較。如果為 True,則輸出陣列中,a 中的 NaN 將被視為等於 b 中的 NaN。
- 傳回值:
- yarray_like
傳回布林陣列,表示 a 和 b 在給定容差範圍內是否相等。如果 a 和 b 都是純量,則傳回單一布林值。
另請參閱
注意事項
對於有限值,isclose 使用以下方程式來測試兩個浮點值是否相等。
absolute(a - b) <= (atol + rtol * absolute(b))
與內建的
math.isclose
不同,上述方程式在 a 和 b 中不對稱 – 它假設 b 是參考值 – 因此 isclose(a, b) 可能與 isclose(b, a) 不同。當參考值 b 的量級小於 1 時,atol 的預設值不適用。例如,
a = 1e-9
和b = 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])