我要做的是对数组进行计算,对其进行转置,减去两个数组,然后查看每个单元格的差异是否具有一定的容差。我能够得到一个减去的数组 - 但我不知道如何循环每个项目来比较数量 - 理想情况下我会测试浮点近似相等;并且返回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
答案 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;。