numpy.allclose#

numpy.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[источник]#

Возвращает True, если два массива поэлементно равны в пределах допуска.

Значения допуска положительные, обычно очень маленькие числа. Относительная разница (rtol * abs(b)) и абсолютная разница atol складываются для сравнения с абсолютной разницей между a и b.

Предупреждение

По умолчанию atol не подходит для сравнения чисел с величинами, значительно меньшими единицы (см. Примечания).

NaN считаются равными, если они находятся в одном и том же месте и если equal_nan=True. Бесконечности считаются равными, если они находятся в одной позиции и имеют одинаковый знак в обоих массивах.

Параметры:
a, barray_like

Входные массивы для сравнения.

rtolarray_like

Параметр относительной погрешности (см. Примечания).

atolarray_like

Параметр абсолютной погрешности (см. Примечания).

equal_nanbool

Сравнивать ли NaN как равные. Если True, NaN в a будет считаться равным NaN в b в выходном массиве.

Возвращает:
allclosebool

Возвращает True, если два массива равны в пределах заданной допустимой погрешности; False в противном случае.

Смотрите также

isclose, all, any, equal

Примечания

Если следующее уравнение истинно поэлементно, то allclose возвращает True.:

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

Приведённое уравнение несимметрично относительно a и b, чтобы allclose(a, b) может отличаться от allclose(b, a) в некоторых редких случаях.

Значение по умолчанию для atol не подходит, когда эталонное значение b имеет величину меньше единицы. Например, маловероятно, что a = 1e-9 и b = 2e-9 должны считаться "близкими", однако allclose(1e-9, 2e-9) является True с настройками по умолчанию. Обязательно выберите atol для конкретного случая использования, особенно для определения порога, ниже которого ненулевое значение в a будет считаться "близким" к очень маленькому или нулевому значению в b.

Сравнение a и b использует стандартное транслирование, что означает, что a и b не обязательно иметь одинаковую форму для allclose(a, b) должно оцениваться как True. То же самое верно для equal но не array_equal.

allclose не определен для нечисловых типов данных. bool считается числовым типом данных для этой цели.

Примеры

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