numpy.isclose

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

返回一个布尔数组,其中两个数组在一个公差内按元素方向相等。

公差值为正数,通常非常小。相对差异 (rtol *ABS (b ))和绝对差异 atol 加在一起比较 ab .

警告

默认值 atol 不适合比较比一小得多的数字(见注释)。

参数
a, barray_like

要比较的输入数组。

rtol浮动

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

atol浮动

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

equal_nan布尔

是否将Nan的值比较为相等。如果是真的,南在 a 将被视为等于 b 在输出数组中。

返回
yarray_like

返回Where的布尔数组 ab 在给定的公差范围内相等。如果两者 ab 是标量,返回单个布尔值。

笔记

1.7.0 新版功能.

对于有限值,isclose使用以下公式来测试两个浮点值是否相等。

绝对的 (a - b < < (atol + rtol *绝对 (b

不像内置的 math.isclose ,上述方程在 ab ——它假定 b 是参考值——所以 isclose(a, b) 可能不同于 isclose(b, a) . 此外,ATOL的默认值不是零,用于确定哪些小值应被视为接近零。默认值适用于顺序一致性的期望值:如果期望值明显小于一,则可能导致误报。 atol 应该为手头的用例仔细选择。的零值 atol 将导致 False 如果任一 ab 是零。

isclose 未为非数字数据类型定义。

实例

>>> 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])