dask.array.allclose

dask.array.allclose

dask.array.allclose(arr1, arr2, rtol=1e-05, atol=1e-08, equal_nan=False)[源代码]

如果两个数组在容差范围内逐元素相等,则返回 True。

此文档字符串是从 numpy.allclose 复制的。

Dask 版本可能存在一些不一致性。

容差值是正数,通常是非常小的数字。相对差异(rtol * abs(b))和绝对差异 atol 相加,与 ab 之间的绝对差异进行比较。

警告

默认的 atol 不适用于比较数量级远小于1的数字(参见注释)。

如果NaN在相同位置且 equal_nan=True,则它们被视为相等。如果Inf在相同位置且在两个数组中具有相同符号,则它们被视为相等。

参数
a, barray_like

要比较的输入数组。

rtolarray_like

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

atolarray_like

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

equal_nan布尔

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

1.10.0 新版功能.

返回
allclose布尔

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