numpy.allclose#
- numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[源代码]#
当两个数组在容差范围内逐元素相等时,返回 True。
容差值是正的,通常是非常小的数字。相对差值(rtol * abs(b))和绝对差值 atol 相加,与 a 和 b 之间的绝对差值进行比较。
警告
默认的 atol 不适用于比较绝对值小于一的数字(参见 Notes)。
如果 NaN 在相同位置且
equal_nan=True,则 NaN 被视为相等。如果 Inf 在相同位置且符号相同,则 Inf 被视为相等。- 参数:
- a, barray_like
要比较的输入数组。
- rtolarray_like
相对容差参数(参见 Notes)。
- atolarray_like
绝对容差参数(参见 Notes)。
- 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 的绝对值小于一时,默认 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