Функция allclose
Функция allclose выполняет поэлементное сравнение двух массивов
и возвращает True, если все соответствующие элементы равны
в пределах заданных допусков. Она особенно полезна при работе
с числами с плавающей точкой, где прямое сравнение на равенство
часто дает ложный результат из-за погрешностей вычислений.
Первым и вторым параметрами передаются сравниваемые массивы.
Третьим параметром можно задать относительную погрешность rtol
(по умолчанию 1e-05), четвертым - абсолютную погрешность
atol (по умолчанию 1e-08). Пятым параметром
передается флаг equal_nan, который определяет,
считать ли элементы NaN равными друг другу.
Синтаксис
np.allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
Пример
Проверим приближенное равенство двух массивов чисел с плавающей точкой:
import numpy as np
arr1 = np.array([1.0, 2.0, 3.0])
arr2 = np.array([1.0000001, 2.0000001, 3.0000001])
res = np.allclose(arr1, arr2)
print(res)
Результат выполнения кода:
True
Пример
Сравним массивы с разными значениями абсолютной погрешности:
import numpy as np
arr1 = np.array([0.1, 0.2, 0.3])
arr2 = np.array([0.15, 0.25, 0.35])
res1 = np.allclose(arr1, arr2, atol=0.01)
res2 = np.allclose(arr1, arr2, atol=0.1)
print(res1)
print(res2)
Результат выполнения кода:
False
True
Пример
Сравним массивы, где элементы отличаются на величину, большую чем допуск:
import numpy as np
arr1 = np.array([10.0, 20.0, 30.0])
arr2 = np.array([10.1, 20.1, 30.1])
res = np.allclose(arr1, arr2, rtol=0.001, atol=0.01)
print(res)
Результат выполнения кода:
False
Пример
Проверим равенство с учетом значений NaN с помощью флага equal_nan:
import numpy as np
arr1 = np.array([1.0, np.nan, 3.0])
arr2 = np.array([1.0, np.nan, 3.0])
res1 = np.allclose(arr1, arr2)
res2 = np.allclose(arr1, arr2, equal_nan=True)
print(res1)
print(res2)
Результат выполнения кода:
False
True
Смотрите также
-
функцию
isclose,
которая проверяет поэлементное приближенное равенство массивов -
функцию
array_equal,
которая проверяет строгое поэлементное равенство массивов -
функцию
array_equiv,
которая проверяет эквивалентность формы и элементов массивов -
функцию
equal,
которая выполняет поэлементное сравнение на строгое равенство