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