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 в противном случае.
Примечания
Если следующее уравнение истинно поэлементно, то 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