13

实现比较两个 numpy 浮点数组的单元测试的最佳方法是什么。

我试过 unittest.assertEqual() 但不适用于浮点数组,因为浮点数永远不会 100% 相等。我不能使用 assertAlmostEqual 因为它测试了 round(floats) 相等性......

有没有人实施过这样的事情

self.assertFloatArrayEqual(array1, array2, msg = "array are not equal")

谢谢

4

3 回答 3

30

如果您仍然使用 numpy,为什么不使用 numpy 测试功能呢?

numpy.testing.assert_array_almost_equal

numpy.testing.assert_array_almost_equal_nulp

这些也处理 NaN 的精细,检查形状等。

于 2013-02-17T13:01:42.243 回答
8

尝试

self.assertTrue(numpy.allclose(array1, array2, rtol=1e-05, atol=1e-08))

numpy 模块中的allclose函数,检查两个数组是否相同机器精度给定的相对和绝对公差。rtol并且atol是具有上述默认值的可选参数。

感谢@DSM 纠正我。

于 2013-02-17T12:22:13.103 回答
1

有一个版本可以比较两个数组,当然这需要 numpy 数组的行为正确,即它们有一个 len() 并且它们允许方括号访问元素。现在,关于舍入误差,可以定义一个增量或范围,您可以使用它们,但我认为这不允许在数组上使用。

恐怕你得自己动手了。

于 2013-02-17T12:04:11.463 回答