dask.array.isclose

dask.array.isclose

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

返回一个布尔数组,其中两个数组在容差范围内逐元素相等。

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

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

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

警告

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

参数
a, barray_like

要比较的输入数组。

rtolarray_like

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

atolarray_like

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

equal_nan布尔

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

返回
yarray_like

返回一个布尔数组,表示 ab 在给定容差内是否相等。如果 ab 都是标量,则返回单个布尔值。

注释

1.7.0 新版功能.

对于有限值,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])