Лучший способ утверждать для numpy.array равенства?

Я хочу сделать некоторые модульные тесты на свое приложение, и я должен сравнить два массива. С тех пор array.__eq__ возвращает новый массив (так TestCase.assertEqual сбои), что лучший способ состоит в том, чтобы утверждать для равенства?

В настоящее время я использую

self.assertTrue((arr1 == arr2).all())

но мне действительно не нравится он

89
задан Seanny123 8 November 2018 в 20:17
поделиться

2 ответа

проверьте функции assert в numpy.testing, например,

assert_array_equal

для массивов с плавающей точкой тест на равенство может не пройти, а assert_almost_equal более надежен.

update

Несколько версий назад в numpy появился assert_allclose, который теперь является моим любимым, поскольку позволяет нам указывать как абсолютную, так и относительную ошибку и не требует десятичного округления в качестве критерия близости.

106
ответ дан 24 November 2019 в 07:19
поделиться

Я думаю, что (arr1 == arr2).all() выглядит довольно красиво. Но вы можете использовать:

numpy.allclose(arr1, arr2)

но это не совсем то же самое.

Альтернатива, почти такая же, как в вашем примере:

numpy.alltrue(arr1 == arr2)

Обратите внимание, что scipy.array фактически является ссылкой на numpy.array. Это облегчает поиск документации.

21
ответ дан 24 November 2019 в 07:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: