1. numpy.isclose
numpy的isclose方法,比较两个array是不是每一元素都相等,默认在1e-05的误差范围内。
numpy.isclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False)
参数:
a, b : 对比的数组
rtol : 相对公差参数
atol : 绝对公差参数
equal_nan : bool,默认False,即NaN值默认不等,如果为True,a与b相同位置的NaN元素将判断相等
判断公式:
absolute(a
- b
) <= (atol
+ rtol
* absolute(b
))
2. numpy.allclose
参数与numpy.isclose相同,判断公式也一样,区别在于numpy.isclose输出a,b两个数组每个位置判断的bool值,而numpy.allclose输出的是a,b两个数组整体的判断结果。
a=[[1,2],[3,4]]
b=[[1,3],[3,3]]
np.isclose(a,b)
Out:
array([[ True, False],
[ True, False]])
np.allclose(a,b)
Out: False
numpy.allclose源码:在nump.isclose基础上,使用all做进一步处理
@array_function_dispatch(_allclose_dispatcher)
def allclose(a, b, rtol=1.e-5, atol=1.e-8, equal_nan=False):
res = all(isclose(a, b, rtol=rtol, atol=atol, equal_nan=equal_nan))
return bool(res)