Skip to main content
`Ctrl`+`K`

# numpy.allclose

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

  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.

  Warning

  The default atol is not appropriate for comparing numbers with 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 same place and of the same sign in both arrays.

  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:
    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 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 `allclose(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.

  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`.

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

  Examples

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