单元测试中numpy浮点数组的比较

2024-06-01 01:41:19 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我试过unittest.assertEqual(),但对float数组无效,因为float从来都不是100%相等的。我不能使用assertAlmostEqual,因为它测试圆(浮点数)的相等性。。。

有人做过这样的工作吗

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

谢谢


Tags: 方法selfnumpymsg数组unittestfloatarray
3条回答

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

恐怕你得自己动手了。

如果您使用的是numpy,为什么不使用numpy测试函数呢?

numpy.testing.assert_array_almost_equal

以及

numpy.testing.assert_array_almost_equal_nulp

这些还处理楠的罚款,检查形状等

试试看

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

numpy模块的allclose函数检查在给定的相对和绝对公差范围内,两个数组是否相同。rtolatol是可选参数,默认值如上所示。

感谢@DSM纠正我的错误。

相关问题 更多 >