实现比较两个 numpy 浮点数组的单元测试的最佳方法是什么。
我试过 unittest.assertEqual() 但不适用于浮点数组,因为浮点数永远不会 100% 相等。我不能使用 assertAlmostEqual 因为它测试了 round(floats) 相等性......
有没有人实施过这样的事情
self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")
谢谢
实现比较两个 numpy 浮点数组的单元测试的最佳方法是什么。
我试过 unittest.assertEqual() 但不适用于浮点数组,因为浮点数永远不会 100% 相等。我不能使用 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))
numpy 模块中的allclose
函数,检查两个数组是否相同机器精度给定的相对和绝对公差。rtol
并且atol
是具有上述默认值的可选参数。
感谢@DSM 纠正我。
有一个版本可以比较两个数组,当然这需要 numpy 数组的行为正确,即它们有一个 len() 并且它们允许方括号访问元素。现在,关于舍入误差,可以定义一个增量或范围,您可以使用它们,但我认为这不允许在数组上使用。
恐怕你得自己动手了。