实现比较两个numpy浮点数组的unittest的最佳方法是什么。
我已经尝试过unittest.assertEqual()但是对于float数组不起作用,因为float永远不会100%相等。我不能使用assertAlmostEqual,因为它测试圆(浮点)相等...
是否有人实现了类似的东西
self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")
感谢
答案 0 :(得分:21)
如果你还在使用numpy,为什么不使用numpy测试函数?
numpy.testing.assert_array_almost_equal
和
numpy.testing.assert_array_almost_equal_nulp
这些也可以处理NaN的精细,检查形状等。
答案 1 :(得分:8)
尝试
self.assertTrue(numpy.allclose(array1, array2, rtol=1e-05, atol=1e-08))
来自numpy模块的allclose
函数,检查两个数组在机器精度内是否相同,给定的相对和绝对容差。 rtol
和atol
是可选参数,默认值如上所示。
感谢@DSM纠正我。
答案 2 :(得分:1)
有一个版本可以比较两个数组,这当然要求numpy数组的行为正确,即它们有一个len()并允许方括号访问元素。现在,关于舍入错误,可以定义一个delta或一个范围,你可以使用它,但我认为这不允许在数组上使用。
我担心你不得不自己动手。