比较2个数组的容差

时间:2017-03-16 20:11:22

标签: python

我要做的是对数组进行计算,对其进行转置,减去两个数组,然后查看每个单元格的差异是否具有一定的容差。我能够得到一个减去的数组 - 但我不知道如何循环每个项目来比较数量 - 理想情况下我会测试浮点近似相等;并且返回true - 如果所有项目都具有容差,否则为false - 不确定如何执行此最后一步。

import numpy as np

a = np.array(([[1, 2, 3], [2, 3, 8],[ 3, 4, 1]])    
b = a.transpose(1, 0)

rows = a.shape[1]
col = a.shape[0]
r = abs(np.subtract(a, b))  # abs value of 2 array

i = 0
while i < rows:
    j = 0
    while j < rows:
        if np.any(r[i][j]) > 3:  # sample using 3 as tolerance
            print("false")
        j += 1
    print("true")
    i += 1

2 个答案:

答案 0 :(得分:1)

这不足以满足您的需求吗?

tolerance = 3
result = (abs(a - b) <= tolerance).all()

答案 1 :(得分:0)

在此步骤中

r = abs(np.subtract(a, b))

你已经有一个距离矩阵,所以你需要做的就是应用比较运算符(numpy是按元素方式应用的)

errors = r > 3

导致布尔数组,如果你想看看有多少元素具有真值,只需求它

print( np.sum(r > 3) )

并检查是否有任何错误,你可以做到

print( np.sum(r > 3) > 0 ) # prints true iff any element of r is bigger than 3

还有内置方法,但这种推理使您可以更灵活地表达&#34; near&#34;或者&#34;好&#34;。