numpy.testing.assert_allclose
- testing.assert_allclose(actual, desired, rtol=1e-07, atol=0, equal_nan=True, err_msg='', verbose=True, *, strict=False)[source]
-
Вызывает AssertionError, если два объекта не равны с заданной точностью.
Для двух объектов array_like проверяет, что их формы и все элементы равны (но см. заметки по специальной обработке скаляра). Возникает исключение, если формы не совпадают или значения конфликтуют. В отличие от стандартного использования в numpy, NaNs сравниваются как числа, исключение не возникает, если в обоих объектах есть NaNs в одинаковых позициях.
Тест эквивалентен
allclose(actual, desired, rtol, atol)(обратите внимание, чтоallcloseимеет другие значения по умолчанию). Он сравнивает разницу междуactualиdesiredсatol + rtol * abs(desired).Добавлена в версии 1.5.0.
- Параметры:
-
- actualarray_like
-
Полученный массив.
- desiredarray_like
-
Желаемый массив.
- rtolfloat, необязательно
-
Относительная погрешность.
- atolfloat, необязательно
-
Абсолютная погрешность.
- equal_nanbool, необязательно.
-
Если True, NaNs будут считаться равными.
- err_msgstr, необязательно
-
Сообщение об ошибке, которое будет выведено в случае неудачи.
- verbosebool, необязательно
-
Если True, конфликтные значения добавляются в сообщение об ошибке.
- strictbool, необязательно
-
Если True, поднимается
AssertionError, когда либо форма, либо тип данных аргументов не совпадают. Специальная обработка скаляров, описанная в разделе «Примечания», отключается.Добавлена в версии 2.0.0.
- Возбуждает:
-
- AssertionError
-
Если actual и desired не равны с указанной точностью.
Примечания
Когда один из
actualиdesiredявляется скаляром, а другой - array_like, функция выполняет сравнение так, как если бы скаляр был расширен до формы массива. Это поведение можно отключить с помощью параметраstrict.Примеры
>>> 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)Параметр
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)
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/generated/numpy.testing.assert_allclose.html