numpy.allclose
(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[source]
Returns True if two arrays are element-wise equal within a tolerance.
The tolerance values are positive, typically very small numbers. The relative difference (rtol * abs(b)) and the absolute difference atol are added together to compare against the absolute difference between a and b.
If either array contains one or more NaNs, False is returned. Infs are treated as equal if they are in the same place and of the same sign in both arrays.
Parameters: | a, b : array_like Input arrays to compare. rtol : float The relative tolerance parameter (see Notes). atol : float The absolute tolerance parameter (see Notes). equal_nan : bool Whether to compare NaN’s as equal. If True, NaN’s in a will be considered equal to NaN’s in b in the output array. New in version 1.10.0. |
---|---|
Returns: | allclose : bool Returns True if the two arrays are equal within the given tolerance; False otherwise. |
See also
isclose
, all
, any
, equal
Notes
If the following equation is element-wise True, then allclose returns True.
absolute(a - b) <= (atol rtol * absolute(b))
The above equation is not symmetric in a and b, so that allclose(a, b)
might be different from allclose(b, a)
in some rare cases.
The comparison of a and b uses standard broadcasting, which means that a and b need not have the same shape in order for allclose(a, b)
to evaluate to True. The same is true for equal
but not array_equal
.
Examples:
代码语言:javascript复制>>> 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