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,则它们被视为相等.如果 Inf 在相同位置且在两个数组中具有相同符号,则它们被视为相等.

参数:
a, barray_like

要比较的输入数组.

rtolarray_like

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

atolarray_like

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

equal_nanbool

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

在 1.10.0 版本加入.

返回:
allclosebool

如果在给定的容差范围内两个数组相等,则返回 True;否则返回 False.

参见

isclose, all, any, equal

备注

如果以下等式在元素级别上为真,则 allclose 返回 True.:

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

上述方程在 ab 之间不是对称的,因此在某些罕见情况下,``allclose(a, b)`` 可能与 allclose(b, a) 不同.

当参考值 b 的量级小于1时,`atol` 的默认值不合适.例如,``a = 1e-9`` 和 b = 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