numpy.allclose#

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

如果两个数组在元素方面在公差范围内相等,则返回 True.

公差值是正数,通常是非常小的数字.相对差 ( rtol * abs( b )) 和绝对差 atol 加在一起,用于与 ab 之间的绝对差进行比较.

警告

默认的 atol 不适合比较幅度远小于 1 的数字(参见注释).

如果 NaN 位于相同的位置且 equal_nan=True ,则将 NaN 视为相等.如果 Inf 位于相同的位置并且在两个数组中都具有相同的符号,则将 Inf 视为相等.

参数:
a, barray_like

要比较的输入数组.

rtolarray_like

相对公差参数(参见注释).

atolarray_like

绝对公差参数(参见注释).

equal_nanbool

是否将 NaN 视为相同.如果为 True,则 a 中的 NaN 将被视为与输出数组中 b 中的 NaN 相同.

返回:
allclosebool

如果两个数组在给定的公差内相等,则返回 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