Spec-Zone.ru › NumPy 2.0

numpy.testing.assert_array_equal

testing.assert_array_equal(actual, desired, err_msg='', verbose=True, *, strict=False)[source]

Вызывает AssertionError, если два объекта array_like не равны.

При заданных двух объектах array_like проверяется, что форма равна, и все элементы этих объектов равны (но см. Примечания для специальной обработки скаляра). Исключение генерируется при несовпадении форм или конфликтующих значениях. В отличие от стандартного использования в numpy, NaN сравниваются как числа, утверждение не генерируется, если оба объекта имеют NaN в одних и тех же позициях.

Рекомендуется соблюдать обычные предосторожности при проверке равенства с числами с плавающей точкой.

Примечание

Когда actual или desired уже являются экземпляром numpy.ndarray, а desired не является dict, поведение assert_equal(actual, desired) идентично поведению этой функции. В противном случае эта функция выполняет np.asanyarray над входными данными перед сравнением, тогда как assert_equal определяет специальные правила сравнения для общих типов Python. Например, только assert_equal можно использовать для сравнения вложенных списков Python. В новом коде рекомендуется использовать только assert_equal, явно преобразуя actual или desired в массивы, если требуется поведение assert_array_equal.

Параметры:
actualarray_like

Проверяемый фактический объект.

desiredarray_like

Желаемый, ожидаемый объект.

err_msgstr, необязательно

Сообщение об ошибке, которое будет выведено в случае сбоя.

verbosebool, необязательно

Если True, конфликтные значения добавляются в сообщение об ошибке.

strictbool, необязательно

Если True, генерируется AssertionError, когда форма или тип данных объектов array_like не совпадают. Специальная обработка скаляров, упомянутая в разделе Примечания, отключается.

Новое в версии 1.24.0.

Возбуждает:
AssertionError

Если объекты actual и desired не равны.

См. также

assert_allclose

Сравнение двух объектов array_like на равенство с требуемой относительной и/или абсолютной точностью.

assert_array_almost_equal_nulp, assert_array_max_ulp, assert_equal

Примечания

Когда один из actual и desired является скаляром, а другой — array_like, функция проверяет, что каждый элемент объекта array_like равен скаляру. Это поведение можно отключить с помощью параметра strict.

Примеры

Первое утверждение не вызывает исключение:

>>> np.testing.assert_array_equal([1.0,2.33333,np.nan],
...                               [np.exp(0),2.33333, np.nan])

Утверждение терпит неудачу из-за числовой неточности с плавающей точкой:

>>> np.testing.assert_array_equal([1.0,np.pi,np.nan],
...                               [1, np.sqrt(np.pi)**2, np.nan])
Traceback (most recent call last):
    ...
AssertionError:
Arrays are not equal

Mismatched elements: 1 / 3 (33.3%)
Max absolute difference among violations: 4.4408921e-16
Max relative difference among violations: 1.41357986e-16
 ACTUAL: array([1.      , 3.141593,      nan])
 DESIRED: array([1.      , 3.141593,      nan])

Вместо этого используйте assert_allclose или одну из функций nulp (число значений с плавающей точкой):

>>> np.testing.assert_allclose([1.0,np.pi,np.nan],
...                            [1, np.sqrt(np.pi)**2, np.nan],
...                            rtol=1e-10, atol=0)

Как упоминалось в разделе Примечания, assert_array_equal имеет специальную обработку для скаляров. Здесь тест проверяет, что каждое значение в x равно 3:

>>> x = np.full((2, 5), fill_value=3)
>>> np.testing.assert_array_equal(x, 3)

Используйте strict для генерации AssertionError при сравнении скаляра с массивом:

>>> np.testing.assert_array_equal(x, 3, strict=True)
Traceback (most recent call last):
    ...
AssertionError:
Arrays are not equal

(shapes (2, 5), () mismatch)
 ACTUAL: array([[3, 3, 3, 3, 3],
       [3, 3, 3, 3, 3]])
 DESIRED: array(3)

Параметр strict также гарантирует соответствие типов данных массива:

>>> x = np.array([2, 2, 2])
>>> y = np.array([2., 2., 2.], dtype=np.float32)
>>> np.testing.assert_array_equal(x, y, strict=True)
Traceback (most recent call last):
    ...
AssertionError:
Arrays are not equal

(dtypes int64, float32 mismatch)
 ACTUAL: array([2, 2, 2])
 DESIRED: array([2., 2., 2.], dtype=float32)

© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.testing.assert_array_equal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API