Python numpy.testing.assert_array_almost_equal函数方法的使用

NumPy(Numerical Python的缩写)是一个开源的Python科学计算库。使用NumPy,就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数,涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中testing.assert_array_almost_equal方法的使用。

numpy.testing.assert_array_almost_equal

numpy.testing.assert_array_almost_equal(x, y, decimal=6, err_msg='', verbose=True)    [source]

如果两个对象不等于期望的精度,则引发AssertionError。

注意:为了更一致的浮点比较,建议使用assert_allcloseassert_array_almost_equal_nulpassert_array_max_ulp之一来代替此函数。

该测试将验证相同的形状以及actualdesired的元素是否令人满意。

abs(desired-actual) < 1.5 * 10**(-decimal)

与原始记录相比,这是一个较宽松的测试,但与实际实现对不完整的舍入相一致。形状不匹配或值冲突会引发异常。与numpy中的标准用法相反,NaN就像数字一样进行比较,如果两个对象在相同位置都具有NaN,则不会引发断言。

参数 :

x :array_like

实际检查对象。

y :array_like

期望的预期对象。

decimalint, 可选

所需精度,默认为6

err_msgstr, 可选

发生故障时要打印的错误消息。

verbosebool, 可选

如果为True,则冲突值将附加到错误消息中。

Raises :

AssertionError

如果实际和期望值不等于指定的精度。

例子

第一个断言不会引发异常

>>> np.testing.assert_array_almost_equal([1.0,2.333,np.nan],
...                                      [1.0,2.333,np.nan])
>>> np.testing.assert_array_almost_equal([1.0,2.33333,np.nan],
...                                      [1.0,2.33339,np.nan], decimal=5)
Traceback (most recent call last):
    ...
AssertionError:\nArrays are not almost equal to 5 decimals
\nMismatched elements: 1 / 3 (33.3%)
Max absolute difference: 6.e-05
Max relative difference: 2.57136612e-05
 x: array([1.     , 2.33333,     nan])
 y: array([1.     , 2.33339,     nan])
>>> np.testing.assert_array_almost_equal([1.0,2.33333,np.nan],
...                                      [1.0,2.33333, 5], decimal=5)
Traceback (most recent call last):
    ...
AssertionError:\nArrays are not almost equal to 5 decimals
\nx and y nan location mismatch:
 x: array([1.     , 2.33333,     nan])
 y: array([1.     , 2.33333, 5.     ])
推荐阅读
cjavapy编程之路首页