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), за исключением того, что он строже: он не транслирует свои операнды и имеет более жёсткие значения допуска по умолчанию. Он сравнивает разницу между фактический и желаемый to atol + 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)