numpy.testing.assert_allclose#
- тестирование.assert_allclose(фактический, желаемый, rtol=1e-07, atol=0, equal_nan=True, err_msg='', verbose=True, *, strict=False)[источник]#
Вызывает AssertionError, если два объекта не равны с заданной допустимой погрешностью.
Даны два объекта array_like, проверьте, что их формы и все элементы равны (но см. примечания для особой обработки скаляра). Исключение возникает, если формы не совпадают или значения конфликтуют. В отличие от стандартного использования в numpy, NaN сравниваются как числа, и утверждение не возникает, если оба объекта имеют NaN в одинаковых позициях.
Тест эквивалентен
allclose(actual, desired, rtol, atol), за исключением того, что он строже: он не транслирует свои операнды и имеет более жёсткие значения допуска по умолчанию. Он сравнивает разницу между фактический и желаемый toatol + rtol * abs(desired).- Параметры:
- фактическийarray_like
Полученный массив.
- желаемыйarray_like
Желаемый массив.
- rtolfloat, опционально
Относительный допуск.
- atolfloat, опционально
Абсолютная погрешность.
- equal_nanbool, опционально.
Если True, NaN будут считаться равными.
- err_msgstr, optional
Сообщение об ошибке для вывода в случае неудачи.
- verbosebool, необязательно
Если True, конфликтующие значения добавляются к сообщению об ошибке.
- strictbool, необязательно
Если True, вызывает
AssertionErrorкогда либо форма, либо тип данных аргументов не совпадает. Особое обращение со скалярами, упомянутое в разделе Примечания, отключено.Новое в версии 2.0.0.
- Вызывает:
- AssertionError
Если actual и desired не равны с заданной точностью.
Смотрите также
Примечания
Когда один из фактический и желаемый является скаляром, а другой - array_like, функция выполняет сравнение, как если бы скаляр был транслирован до формы массива. Обратите внимание, что пустые массивы поэтому считаются равными скалярам. Это поведение можно отключить, установив
strict==True.Примеры
>>> x = [1e-5, 1e-3, 1e-1] >>> y = np.arccos(np.cos(x)) >>> np.testing.assert_allclose(x, y, rtol=1e-5, atol=0)
Как упоминалось в разделе «Примечания»,
assert_allcloseимеет специальную обработку для скаляров. Здесь тест проверяет, что значениеnumpy.sinпочти равен нулю при целых кратных π.>>> x = np.arange(3) * np.pi >>> np.testing.assert_allclose(np.sin(x), 0, atol=1e-15)
Используйте strict вызвать
AssertionErrorпри сравнении массива с одним или несколькими измерениями со скаляром.>>> np.testing.assert_allclose(np.sin(x), 0, atol=1e-15, strict=True) Traceback (most recent call last): ... AssertionError: Not equal to tolerance rtol=1e-07, atol=1e-15 (shapes (3,), () mismatch) ACTUAL: array([ 0.000000e+00, 1.224647e-16, -2.449294e-16]) DESIRED: array(0)
The strict параметр также гарантирует, что типы данных массива совпадают:
>>> y = np.zeros(3, dtype=np.float32) >>> np.testing.assert_allclose(np.sin(x), y, atol=1e-15, strict=True) Traceback (most recent call last): ... AssertionError: Not equal to tolerance rtol=1e-07, atol=1e-15 (dtypes float64, float32 mismatch) ACTUAL: array([ 0.000000e+00, 1.224647e-16, -2.449294e-16]) DESIRED: array([0., 0., 0.], dtype=float32)