numpy.testing.assert_array_equal
numpy.testing.assert_array_equal(x, y, err_msg='', verbose=True) [source]
如果两个array_like对象不相等,则引发AssertionError。
给定两个array_like对象,检查形状是否相等以及这些对象的所有元素是否相等(但是请参阅注释,了解标量的特殊处理)。当形状不匹配或值冲突时引发异常。与numpy中的标准用法相反,将nan作为数字进行比较,如果两个对象的nan位于相同的位置,则不会产生断言。
建议使用浮点数验证是否相等时要格外小心。
参数 : | x :array_like 实际检查对象。 y :array_like 期望的预期对象。 err_msg : 发生故障时要打印的错误消息。 verbose : 如果为 |
Raises : | AssertionError 如果实际对象与期望对象不相等。 |
Notes
当x和y中的一个是标量,另一个是array_like时,该函数将检查array_like对象的每个元素是否等于标量。
例子
第一个断言不会引发异常:
>>> np.testing.assert_array_equal([1.0,2.33333,np.nan],
... [np.exp(0),2.33333, np.nan])
声明由于浮点数值不精确而失败:
>>> np.testing.assert_array_equal([1.0,np.pi,np.nan],
... [1, np.sqrt(np.pi)**2, np.nan])
Traceback (most recent call last):
...
AssertionError:\nArrays are not equal
\nMismatched elements: 1 / 3 (33.3%)
Max absolute difference: 4.4408921e-16
Max relative difference: 1.41357986e-16
x: array([1. , 3.141593, nan])
y: array([1. , 3.141593, nan])
在这些情况下,使用assert_allclose
或nulp(浮点值的数量)函数之一:
>>> np.testing.assert_allclose([1.0,np.pi,np.nan],
... [1, np.sqrt(np.pi)**2, np.nan],
... rtol=1e-10, atol=0)
如注释部分所述,assert_array_equal
具有标量的特殊处理。在这里,测试检查x中的每个值是否为3:
>>> x = np.full((2, 5), fill_value=3)
>>> np.testing.assert_array_equal(x, 3)