Функция testing.assert_array_equal
Функция testing.assert_array_equal проверяет равенство двух массивов NumPy.
Она сравнивает форму массивов, их типы данных и поэлементные значения.
Если массивы не совпадают по этим параметрам, функция выбрасывает исключение AssertionError
с подробным сообщением о различиях.
Синтаксис
np.testing.assert_array_equal(x, y, [err_msg], [verbose])
Параметры:
-
x- первый массив для сравнения; -
y- второй массив для сравнения; -
err_msg- необязательное пользовательское сообщение об ошибке; -
verbose- необязательный флаг для вывода подробной информации о различиях.
Пример
Сравним два одинаковых массива:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([1, 2, 3, 4, 5])
np.testing.assert_array_equal(arr1, arr2)
print("Arrays are equal")
Результат выполнения кода:
"Arrays are equal"
Пример
Сравним два разных массива. Функция выбросит исключение:
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([1, 2, 3, 4, 6])
np.testing.assert_array_equal(arr1, arr2)
Результат выполнения кода:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../numpy/testing/_private/utils.py", line 1186, in assert_array_equal
assert_equal(desired, actual, err_msg, verbose=verbose)
AssertionError:
Arrays are not equal
Mismatched elements: 1 / 5 (20.0%)
Max absolute difference: 1
Max relative difference: 0.16666667
x: array([1, 2, 3, 4, 5])
y: array([1, 2, 3, 4, 6])
Пример
Используем пользовательское сообщение об ошибке:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[1, 2], [3, 5]])
np.testing.assert_array_equal(
arr1,
arr2,
err_msg="Arrays do not match"
)
Результат выполнения кода:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File ".../numpy/testing/_private/utils.py", line 1186, in assert_array_equal
assert_equal(desired, actual, err_msg, verbose=verbose)
AssertionError:
Arrays do not match
Arrays are not equal
Mismatched elements: 1 / 4 (25.0%)
Max absolute difference: 1
Max relative difference: 0.25
x: array([[1, 2],
[3, 4]])
y: array([[1, 2],
[3, 5]])
Пример
Сравнение массивов с плавающей точкой:
import numpy as np
arr1 = np.array([0.1, 0.2, 0.3])
arr2 = np.array([0.1, 0.2, 0.3000001])
try:
np.testing.assert_array_equal(arr1, arr2)
print("Arrays are equal")
except AssertionError as e:
print("Arrays are not equal")
print("Error:", str(e)[:200])
Результат выполнения кода:
"Arrays are not equal"
"Error:
Arrays are not equal
Mismatched elements: 1 / 3 (33.3%)
Max absolute difference: 1.0000000000000005e-07
Max relative difference: 3.333333666666667e-07
x: array([0.1, 0.2, 0.3])
y: array([0.1, 0.2, 0.3000001])"
Пример
Использование в тестовой функции:
import numpy as np
def test_array_operation():
input_arr = np.array([1, 2, 3, 4])
expected = np.array([2, 4, 6, 8])
result = input_arr * 2
np.testing.assert_array_equal(
result,
expected,
"Multiplication operation failed"
)
print("Test passed")
test_array_operation()
Результат выполнения кода:
"Test passed"
Смотрите также
-
функцию
assert_allclose,
которая проверяет приближенное равенство массивов с заданной точностью -
функцию
assert_array_almost_equal,
которая проверяет приближенное равенство массивов с заданным количеством десятичных знаков -
функцию
assert_equal,
которая проверяет равенство любых объектов Python, включая скаляры -
функцию
assert_raises,
которая проверяет, что блок кода вызывает указанное исключение