如何实现一个可以比较两个numpy浮点数组的单元测试最佳方式。
我尝试使用unittest.assertEqual()进行比较,但由于浮点数永远不会完全相等,因此对于浮点数组不起作用。我不能使用assertAlmostEqual,因为它测试的是round(floats)相等性...
有人实现过类似的东西吗?
self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")
谢谢
如何实现一个可以比较两个numpy浮点数组的单元测试最佳方式。
我尝试使用unittest.assertEqual()进行比较,但由于浮点数永远不会完全相等,因此对于浮点数组不起作用。我不能使用assertAlmostEqual,因为它测试的是round(floats)相等性...
有人实现过类似的东西吗?
self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")
谢谢
如果你已经在使用 numpy 了,为什么不直接使用 numpy 的测试函数呢?
numpy.testing.assert_array_almost_equal
和
numpy.testing.assert_array_almost_equal_nulp
这些函数也可以很好地处理NaN值,检查形状等。
尝试
self.assertTrue(numpy.allclose(array1, array2, rtol=1e-05, atol=1e-08))
allclose
函数可以检查两个数组是否在给定的相对和绝对公差内相同。其中rtol
和atol
是可选参数,其默认值如上所述。rtol=1.e-5, atol=1.e-8
,与机器精度相差甚远。请注意调整容限。 - DSM