numpy.ma.allclose#

ma.allclose(a, b, masked_equal=True, rtol=1e-05, atol=1e-08)[源代码]#

如果两个数组在一定误差范围内逐元素相等,则返回 True。

此函数等效于 allclose, 只是根据 masked_equal 参数,掩码值被视为相等(默认)或不相等。

参数:
a, barray_like

要比较的输入数组。

masked_equalbool, 可选

是否将 *a* 和 *b* 中的掩码值视为相等(True)或不相等(False)。默认情况下,它们被视为相等。

rtolfloat, 可选

相对容差。相对差等于 rtol * b。默认值为 1e-5。

atolfloat, 可选

绝对容差。绝对差等于 *atol*。默认值为 1e-8。

返回:
ybool

如果两个数组在给定的容差范围内相等,则返回 True,否则返回 False。如果任一数组包含 NaN,则返回 False。

另请参阅

all, any
numpy.allclose

非掩码的 allclose

注释

如果以下等式逐元素为 True,则 allclose 返回 True

absolute(`a` - `b`) <= (`atol` + `rtol` * absolute(`b`))

如果 *a* 和 *b* 的所有元素在给定容差范围内都相等,则返回 True。

示例

>>> import numpy as np
>>> a = np.ma.array([1e10, 1e-7, 42.0], mask=[0, 0, 1])
>>> a
masked_array(data=[10000000000.0, 1e-07, --],
             mask=[False, False,  True],
       fill_value=1e+20)
>>> b = np.ma.array([1e10, 1e-8, -42.0], mask=[0, 0, 1])
>>> np.ma.allclose(a, b)
False
>>> a = np.ma.array([1e10, 1e-8, 42.0], mask=[0, 0, 1])
>>> b = np.ma.array([1.00001e10, 1e-9, -42.0], mask=[0, 0, 1])
>>> np.ma.allclose(a, b)
True
>>> np.ma.allclose(a, b, masked_equal=False)
False

掩码值不会直接比较。

>>> a = np.ma.array([1e10, 1e-8, 42.0], mask=[0, 0, 1])
>>> b = np.ma.array([1.00001e10, 1e-9, 42.0], mask=[0, 0, 1])
>>> np.ma.allclose(a, b)
True
>>> np.ma.allclose(a, b, masked_equal=False)
False