Утвердить массив почти равным нулю - PullRequest
0 голосов
/ 06 августа 2020

Я пишу модульные тесты для своей симуляции и хочу проверить, что для определенных c параметров результат, массив numpy, равен нулю. Из-за неточности расчетов принимаются также небольшие значения (1e-7). Как лучше всего утверждать, что этот массив во всех местах близок к 0?

  • np.testing.assert_array_almost_equal(a, np.zeros(a.shape)) и assert_allclose терпят неудачу, поскольку относительный допуск равен inf (или 1, если вы переключаете аргументы ) Docu
  • Мне кажется, что np.testing.assert_array_almost_equal_nulp(a, np.zeros(a.shape)) недостаточно точен, поскольку он сравнивает разницу с интервалом, поэтому всегда верно для nulps >= 1 и ложно в других случаях, но ничего не говорит о амплитуда a Docu
  • Использование np.testing.assert_(np.all(np.absolute(a) < 1e-7)) на основе этот вопрос не дает подробного вывода, я привык к другим np.testing методы

Есть ли другой способ проверить это? Может быть, еще один тестовый пакет?

1 Ответ

0 голосов
/ 08 августа 2020

Если вы сравните массив numpy со всеми нулями, вы можете использовать абсолютный допуск, поскольку относительный допуск здесь не имеет смысла:

from numpy.testing import assert_allclose

def test_zero_array():
    a = np.array([0, 1e-07, 1e-08])
    assert_allclose(a, np.zeros_like(a), atol=1e-07)

Значение rtol не имеет значения в в этом случае, так как он умножается на 0 при расчете допуска:

atol + rtol * abs(desired)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...