断言数组几乎等于零

Assert array almost equal zero

我正在为我的模拟编写单元测试,并想检查特定参数的结果(numpy 数组)是否为零。由于计算不准确,也接受较小的值 (1e-7)。断言此数组在所有位置都接近 0 的最佳方法是什么?

还有其他方法可以测试吗?也许另一个测试包?

如果比较全为零的 numpy 数组,可以使用绝对容差,因为相对容差在这里没有意义:

from numpy.testing import assert_allclose

def test_zero_array():
    a = np.array([0, 1e-07, 1e-08])
    assert_allclose(a, 0, atol=1e-07)

rtol 值在这种情况下无关紧要,因为如果计算公差,它会乘以 0:

atol + rtol * abs(desired)

更新:用更简单的标量 0 替换了 np.zeros_like(a)。正如@hintze 所指出的,np 数组比较也适用于标量。