numpy.isclose#
- numpy.isclose(a,b,rtol=1e-05,atol=1e-08,equal_nan=False)[source]#
Returns a boolean array where two arrays are element-wise equal within atolerance.
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).
- 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:
- yarray_like
Returns a boolean array of wherea andb are equal within thegiven tolerance. If botha andb are scalars, returns a singleboolean value.
See also
Notes
For finite values, isclose uses the following equation to test whethertwo floating point values are equivalent.:
absolute(a-b)<=(atol+rtol*absolute(b))
Unlike the built-in
math.isclose, the above equation is not symmetricina andb – it assumesb is the reference value – so thatisclose(a, b) might be different fromisclose(b, a).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”, yetisclose(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.iscloseis not defined for non-numeric data types.boolis considered a numeric data-type for this purpose.Examples
>>>importnumpyasnp>>>np.isclose([1e10,1e-7],[1.00001e10,1e-8])array([ True, False])
>>>np.isclose([1e10,1e-8],[1.00001e10,1e-9])array([ True, True])
>>>np.isclose([1e10,1e-8],[1.0001e10,1e-9])array([False, True])
>>>np.isclose([1.0,np.nan],[1.0,np.nan])array([ True, False])
>>>np.isclose([1.0,np.nan],[1.0,np.nan],equal_nan=True)array([ True, True])
>>>np.isclose([1e-8,1e-7],[0.0,0.0])array([ True, False])
>>>np.isclose([1e-100,1e-7],[0.0,0.0],atol=0.0)array([False, False])
>>>np.isclose([1e-10,1e-10],[1e-20,0.0])array([ True, True])
>>>np.isclose([1e-10,1e-10],[1e-20,0.999999e-10],atol=0.0)array([False, True])