Я хочу сделать некоторые модульные тесты на свое приложение, и я должен сравнить два массива. С тех пор array.__eq__
возвращает новый массив (так TestCase.assertEqual
сбои), что лучший способ состоит в том, чтобы утверждать для равенства?
В настоящее время я использую
self.assertTrue((arr1 == arr2).all())
но мне действительно не нравится он
проверьте функции assert в numpy.testing
, например,
assert_array_equal
для массивов с плавающей точкой тест на равенство может не пройти, а assert_almost_equal
более надежен.
update
Несколько версий назад в numpy появился assert_allclose
, который теперь является моим любимым, поскольку позволяет нам указывать как абсолютную, так и относительную ошибку и не требует десятичного округления в качестве критерия близости.
Я думаю, что (arr1 == arr2).all()
выглядит довольно красиво. Но вы можете использовать:
numpy.allclose(arr1, arr2)
но это не совсем то же самое.
Альтернатива, почти такая же, как в вашем примере:
numpy.alltrue(arr1 == arr2)
Обратите внимание, что scipy.array фактически является ссылкой на numpy.array. Это облегчает поиск документации.