numpy.allclose#
- numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[源代码]#
如果两个数组在容差范围内按元素方式相等,则返回 True.
容差值为正数,通常是非常小的数字.相对差异( rtol * abs( b ))和绝对差异 atol 加在一起,与 a 和 b 之间的绝对差异进行比较.
警告
默认的 atol 不适合比较幅度远小于 1 的数字(请参阅注释).
如果 NaN 位于同一位置并且
equal_nan=True,则将 NaN 视为相等.如果 Inf 位于同一位置并且在两个数组中符号相同,则将 Inf 视为相等.- 参数:
- a, barray_like
要比较的输入数组.
- rtolarray_like
相对容差参数(请参阅注释).
- atolarray_like
绝对容差参数(请参阅注释).
- equal_nanbool
是否将 NaN 视为相等.如果为 True,则 a 中的 NaN 将被视为等于输出数组中 b 中的 NaN.
- 返回:
- allclosebool
如果两个数组在给定的容差范围内相等,则返回 True;否则返回 False.
注释
如果以下等式按元素方式为 True,则 allclose 返回 True.:
absolute(a - b) <= (atol + rtol * absolute(b))
上面的等式在 a 和 b 中不是对称的,因此在某些罕见的情况下,
allclose(a, b)可能与allclose(b, a)不同.当参考值 b 的幅度小于 1 时, atol 的默认值不合适.例如,
a = 1e-9和b = 2e-9不太可能被认为是"接近的",但使用默认设置,allclose(1e-9, 2e-9)为True.请务必为手头的用例选择 atol ,特别是用于定义 a 中的非零值被认为"接近" b 中的非常小或零值的阈值.a 和 b 的比较使用标准广播,这意味着 a 和 b 不需要具有相同的形状,
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