РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
324 of 541 menu

Функция testing.assert_allclose

Функция testing.assert_allclose проверяет, что два массива равны с заданной точностью. Она особенно полезна при тестировании численных алгоритмов, где из-за округлений значения могут не совпадать в точности. Функция принимает два массива для сравнения, а также параметры допустимой абсолютной и относительной погрешности.

Синтаксис

np.testing.assert_allclose( actual, desired, rtol=1e-07, atol=0, equal_nan=False, err_msg='', verbose=True )

Пример

Давайте сравним два массива с плавающей точкой, которые должны быть равны с учётом погрешности:

import numpy as np arr1 = np.array([1.0, 2.0, 3.0]) arr2 = np.array([1.0000001, 2.0000001, 3.0000001]) np.testing.assert_allclose(arr1, arr2) print("Arrays are close")

Результат выполнения кода:

"Arrays are close"

Пример

Теперь сравним массивы с более строгими допусками, чтобы показать возникновение ошибки:

import numpy as np arr1 = np.array([1.0, 2.0, 3.0]) arr2 = np.array([1.0001, 2.0001, 3.0001]) try: np.testing.assert_allclose( arr1, arr2, rtol=1e-05, atol=1e-06 ) print("Arrays are close") except AssertionError as e: print("AssertionError caught")

Результат выполнения кода:

"AssertionError caught"

Пример

Сравним двумерные массивы, указав только абсолютный допуск без учёта относительной погрешности:

import numpy as np arr1 = np.array([[1.5, 2.5], [3.5, 4.5]]) arr2 = np.array([[1.5001, 2.5001], [3.5001, 4.5001]]) np.testing.assert_allclose( arr1, arr2, rtol=0, atol=1e-03 ) print("Arrays are close with absolute tolerance")

Результат выполнения кода:

"Arrays are close with absolute tolerance"

Пример

Рассмотрим случай с элементами NaN. По умолчанию сравнение NaN не даёт совпадения, но можно включить специальный флаг:

import numpy as np arr1 = np.array([1.0, np.nan, 3.0]) arr2 = np.array([1.0, np.nan, 3.0]) # Without equal_nan raises error try: np.testing.assert_allclose(arr1, arr2, equal_nan=False) print("No error") except AssertionError as e: print("AssertionError without equal_nan") # With equal_nan passes np.testing.assert_allclose(arr1, arr2, equal_nan=True) print("Arrays with NaN are close")

Результат выполнения кода:

"AssertionError without equal_nan" "Arrays with NaN are close"

Пример

Сравним массивы разных типов данных. Функция автоматически приводит их к общему типу:

import numpy as np arr1 = np.array([1, 2, 3], dtype=np.int32) arr2 = np.array([1.0000001, 2.0000001, 3.0000001], dtype=np.float64) np.testing.assert_allclose(arr1, arr2) print("Integer and float arrays are close")

Результат выполнения кода:

"Integer and float arrays are close"

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

  • функцию assert_array_equal,
    которая проверяет точное равенство массивов
  • функцию assert_array_almost_equal,
    которая проверяет равенство с заданной точностью для вещественных чисел
  • функцию assert_equal,
    которая проверяет равенство любых объектов
  • функцию assert_raises,
    которая проверяет, что код вызывает ожидаемое исключение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить