numpy.isclose#

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

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

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

警告

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

参数:
a, barray_like

要比较的输入数组.

rtolarray_like

相对容差参数(请参阅注释).

atolarray_like

绝对容差参数(请参阅注释).

equal_nanbool

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

返回:
yarray_like

返回一个布尔数组,其中 ab 在给定的容差范围内相等.如果 ab 都是标量,则返回单个布尔值.

注释

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