При работе с числами с плавающей запятой в NumPy сравнение на точное равенство может быть проблематичным из-за присущей этим значениям неточности. Вместо этого часто необходимо сравнивать с допуском или значением эпсилон. В этой статье мы рассмотрим различные методы установления равенства с эпсилоном в NumPy, попутно предоставляя примеры кода. Эти методы помогут вам с уверенностью проводить числовые сравнения и испытания.
Метод 1: использование функции isclose() Numpy
Функция isclose()в NumPy разработана специально для сравнения чисел с плавающей запятой с допуском. Он возвращает логический массив той же формы, что и входные массивы, указывая, находятся ли элементы близко в пределах указанного допуска. Вот пример:
import numpy as np
a = np.array([1.0, 2.0, 3.0])
b = np.array([1.00001, 2.00002, 2.99999])
assert np.isclose(a, b, atol=1e-5).all()
Метод 2: реализация пользовательской функции
Вы также можете создать пользовательскую функцию для сравнения чисел с плавающей запятой, используя определенное пользователем значение эпсилона. Вот пример:
import numpy as np
def assert_equal_epsilon(a, b, epsilon):
return np.abs(a - b) <= epsilon
a = np.array([1.0, 2.0, 3.0])
b = np.array([1.00001, 2.00002, 2.99999])
assert assert_equal_epsilon(a, b, 1e-5).all()
Метод 3: использование модуля numpy.testing
Модуль testingNumPy предоставляет несколько функций для численного тестирования. Функция assert_allclose()утверждает, что два массива поэлементно равны в пределах указанного допуска. Вот пример:
import numpy as np
from numpy.testing import assert_allclose
a = np.array([1.0, 2.0, 3.0])
b = np.array([1.00001, 2.00002, 2.99999])
assert_allclose(a, b, atol=1e-5)
В этой статье мы рассмотрели различные методы проверки равенства с эпсилоном в NumPy. Мы рассмотрели использование функции isclose()NumPy, создание пользовательских функций и использование функции assert_allclose()из модуля numpy.testing. Эти методы позволяют выполнять численные сравнения и тестирование с числами с плавающей запятой, учитывая присущую им неточность. Применяя эти методы, вы сможете уверенно выполнять числовые сравнения в своем коде NumPy.