将两个numpy数组相互比较

Dou*_* AA 10 python arrays compare numpy elements

我有两个同样大小的numpy数组(它们碰巧是48x365),其中每个元素都是-1,0或1.我想比较两者,看看它们是多少次相同,多少次它们是不同的同时折扣所有时间,其中至少有一个数组为零,因为没有数据.例如:

for x in range(48):
    for y in range(365):
        if array1[x][y] != 0:
            if array2[x][y] != 0:
                if array1[x][y] == array2[x][y]:
                    score = score + 1
                else:
                    score = score - 1
return score
Run Code Online (Sandbox Code Playgroud)

这需要很长时间.我正在考虑利用将元素相乘并总结所有答案的事实可能会给出相同的结果,而我正在寻找一个特殊的numpy函数来帮助解决这个问题.我不确定那里有什么不寻常的numpy功能.

Pau*_*aul 12

Simpy不迭代.迭代numpy数组会破坏使用该工具的目的.

ans = np.logical_and(
    np.logical_and(array1 != 0, array2 != 0),
    array1 == array2 )
Run Code Online (Sandbox Code Playgroud)

应该给出正确的解决方案.


yka*_*hou 6

对我来说,最简单的方法是这样做:

A = numpy.array()
B = numpy.array()

T = A - B
max = numpy.max(numpy.abs(T))

epsilon = 1e-6
if max > epsilon:
    raise Exception("Not matching arrays")
Run Code Online (Sandbox Code Playgroud)

它允许快速了解数组是否相同并允许比较浮点值!!