numpy.allclose#
- 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. Therelative difference (rtol * abs(b)) and the absolute differenceatol are added together to compare against the absolute differencebetweena andb.
Warning
The defaultatol is not appropriate for comparing numberswith magnitudes much smaller than one (see Notes).
NaNs are treated as equal if they are in the same place and if
equal_nan=True. Infs are treated as equal if they are in the sameplace and of the same sign in both arrays.- Parameters:
- a, barray_like
Input arrays to compare.
- rtolarray_like
The relative tolerance parameter (see Notes).
- atolarray_like
The absolute tolerance parameter (see Notes).
- equal_nanbool
Whether to compare NaN’s as equal. If True, NaN’s ina will beconsidered equal to NaN’s inb in the output array.
- Returns:
- allclosebool
Returns True if the two arrays are equal within the giventolerance; False otherwise.
Notes
If the following equation is element-wise True, then allclose returnsTrue.:
absolute(a-b)<=(atol+rtol*absolute(b))
The above equation is not symmetric ina andb, so that
allclose(a,b)might be different fromallclose(b,a)insome rare cases.The default value ofatol is not appropriate when the reference valueb has magnitude smaller than one. For example, it is unlikely that
a=1e-9andb=2e-9should be considered “close”, yetallclose(1e-9,2e-9)isTruewith default settings. Be sureto selectatol for the use case at hand, especially for defining thethreshold below which a non-zero value ina will be considered “close”to a very small or zero value inb.The comparison ofa andb uses standard broadcasting, whichmeans thata andb need not have the same shape in order for
allclose(a,b)to evaluate to True. The same is true forequalbut notarray_equal.allcloseis not defined for non-numeric data types.boolis considered a numeric data-type for this purpose.Examples
>>>importnumpyasnp>>>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