numpy.isclose#
- numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[源代码]#
返回一个布尔数组,其中两个数组在容差范围内逐元素相等.
公差值是正数,通常是非常小的数字.相对差 ( rtol * abs( b )) 和绝对差 atol 加在一起,用于与 a 和 b 之间的绝对差进行比较.
警告
默认的 atol 不适合比较幅度远小于 1 的数字(参见注释).
- 参数:
- a, barray_like
要比较的输入数组.
- rtolarray_like
相对公差参数(参见注释).
- atolarray_like
绝对公差参数(参见注释).
- equal_nanbool
是否将 NaN 视为相同.如果为 True,则 a 中的 NaN 将被视为与输出数组中 b 中的 NaN 相同.
- 返回:
- yarray_like
返回一个布尔数组,其中 a 和 b 在给定的容差范围内相等.如果 a 和 b 都是标量,则返回单个布尔值.
注释
对于有限值,isclose 使用以下等式来测试两个浮点值是否相等.:
absolute(a - b) <= (atol + rtol * absolute(b))
与内置的
math.isclose不同,上面的等式在 a 和 b 中不是对称的–它假定 b 是参考值–因此 isclose(a, b) 可能与 isclose(b, a) 不同.当参考值 b 的大小小于 1 时, atol 的默认值不合适.例如, a = 1e-9 和 b = 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])