np.allclose()——python中numpy的函数allclose()用法

numpy的allclose方法,比较两个array是不是每一元素都相等,默认在1e-05的误差范围内。
使用如图:


image.png

源码如下:

@array_function_dispatch(_allclose_dispatcher)

def allclose(a, b, rtol=1.e-5, atol=1.e-8, 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`.



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



        .. versionadded:: 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

    --------

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



    """

    res = all(isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan))

    return bool(res)

你可能感兴趣的:(np.allclose()——python中numpy的函数allclose()用法)