Skip to main content
`Ctrl`+`K`

# numpy.isclose

numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)

  Returns a boolean array where 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.

  Warning

  The default atol is not appropriate for comparing numbers with magnitudes much smaller than one (see Notes).

  Parameters:
    a, b array_like

      Input arrays to compare.

    rtol array_like

      The relative tolerance parameter (see Notes).

    atol array_like

      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.

  Returns:
    y array_like

      Returns a boolean array of where a and b are equal within the given tolerance. If both a and b are scalars, returns a single boolean value.

  See also

  `allclose`
  `math.isclose`

  Notes

  For finite values, isclose uses the following equation to test whether two floating point values are equivalent.:

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

  Unlike the built-in `math.isclose`, the above equation is not symmetric in a and b – it assumes b is the reference value – so that isclose(a, b) might be different from isclose(b, a).

  The default value of atol is not appropriate when the reference value b has magnitude smaller than one. For example, it is unlikely that `a = 1e-9` and `b = 2e-9` should be considered “close”, yet `isclose(1e-9, 2e-9)` is `True` with default settings. Be sure to select atol for the use case at hand, especially for defining the threshold below which a non-zero value in a will be considered “close” to a very small or zero value in b.

  `isclose` is not defined for non-numeric data types. `bool` is considered a numeric data-type for this purpose.

  Examples

      >>> import numpy as np
      >>> 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])