【发布时间】:2020-11-27 04:32:17
【问题描述】:
我正在为我的模拟编写单元测试,并想检查特定参数的结果(一个 numpy 数组)是否为零。由于计算不准确,也接受较小的值 (1e-7)。断言这个数组在所有地方都接近 0 的最佳方法是什么?
-
np.testing.assert_array_almost_equal(a, np.zeros(a.shape))和assert_allclose失败,因为相对容差为inf(如果切换参数,则为 1)Docu - 我觉得
np.testing.assert_array_almost_equal_nulp(a, np.zeros(a.shape))不够精确,因为它将差异与间距进行比较,因此nulps >= 1始终为真,否则为假,但没有说明a的幅度Docu - 基于this question使用
np.testing.assert_(np.all(np.absolute(a) < 1e-7))并没有给出任何详细的输出,我已经习惯了其他np.testing方法
还有其他方法可以测试吗?也许另一个测试包?
【问题讨论】:
-
为什么不能使用
assert_allclose中的绝对容差参数呢? -
谢谢,@MrBeanBremen,你是完全正确的。您可以将其发布为答案,以便我接受吗?抱歉,我没有想到这个简单的解决方案。
-
另外,
np.zeros的构造不起作用,使用np.zeros_like可能会更好。
标签: python arrays unit-testing assert