numpy.isclose#
- numpy.isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)[источник]#
Возвращает булев массив, где два массива поэлементно равны в пределах допуска.
Значения допуска положительные, обычно очень маленькие числа. Относительная разница (rtol * abs(b)) и абсолютная разница atol складываются для сравнения с абсолютной разницей между a и b.
Предупреждение
По умолчанию atol не подходит для сравнения чисел с величинами, значительно меньшими единицы (см. Примечания).
- Параметры:
- a, barray_like
Входные массивы для сравнения.
- rtolarray_like
Параметр относительной погрешности (см. Примечания).
- atolarray_like
Параметр абсолютной погрешности (см. Примечания).
- equal_nanbool
Сравнивать ли NaN как равные. Если True, NaN в a будет считаться равным NaN в b в выходном массиве.
- Возвращает:
- yarray_like
Возвращает булев массив, указывающий, где a и b равны в пределах заданной погрешности. Если оба a и b являются скалярами, возвращает одно логическое значение.
Смотрите также
Примечания
Для конечных значений isclose использует следующее уравнение для проверки эквивалентности двух значений с плавающей точкой:
absolute(a - b) <= (atol + rtol * absolute(b))
В отличие от встроенной
math.isclose, приведенное выше уравнение не симметрично относительно a и b – предполагается, что b является эталонным значением – так что isclose(a, b) может отличаться от isclose(b, a).Значение по умолчанию для atol не подходит, когда эталонное значение b имеет величину меньше единицы. Например, маловероятно, что
a = 1e-9иb = 2e-9должны считаться "близкими", однакоisclose(1e-9, 2e-9)являетсяTrueс настройками по умолчанию. Обязательно выберите atol для конкретного случая использования, особенно для определения порога, ниже которого ненулевое значение в a будет считаться "близким" к очень маленькому или нулевому значению в b.iscloseне определен для нечисловых типов данных.boolсчитается числовым типом данных для этой цели.Примеры
>>> 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])