Python Numpy多维数组,计算相等的内部数组

Python Numpy多维数组,计算相等的内部数组,python,arrays,numpy,Python,Arrays,Numpy,我试着比较两个三维数组,计算有多少个内部数组是相等的 我比较了一张图片的两个补丁,想知道有多少像素是相等的,而不是多少颜色值是相等的。如果它是高效的,那就太好了,所以我用的是numpy。我知道如何与for循环进行比较,但速度太慢了 但我只能按元素计算,以下是我的代码片段: import numpy as np a = np.array([[[255, 255, 255], [255, 255, 255], [255, 255, 255],

我试着比较两个三维数组,计算有多少个内部数组是相等的

我比较了一张图片的两个补丁,想知道有多少像素是相等的,而不是多少颜色值是相等的。如果它是高效的,那就太好了,所以我用的是numpy。我知道如何与for循环进行比较,但速度太慢了

但我只能按元素计算,以下是我的代码片段:

import numpy as np

a = np.array([[[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]],

          [[255, 255, 255],
           [255, 255, 255],
           [255, 255, 255],
           [255, 255, 255]]])

b = np.array([[[255, 255, 255],
           [255, 255, 255],
           [0, 0, 0],
           [0, 0, 0]],

          [[255, 255, 255],
           [255, 255, 255],
           [0, 0, 0],
           [0, 0, 0]],

          [[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]],

          [[0, 0, 0],
           [0, 0, 0],
           [0, 0, 0],
           [0, 0, 0]]])
print(np.sum(a[:, :] == b[:, :])) 
# prints 12 and i would like to have a 4 in this example

首先检查每个像素的所有三个颜色值是否相等,然后通过对真实值求和来计算相等的像素:

(a == b).all(axis=-1).sum()
# 4

想要的答案不是应该是4吗?我看到4个子数组相等是的:)我还有一个问题,也许你可以回答。我想检查是否有相等的,但有一个小的差异。换言之,如果该值为例如10%的折扣,则该值相等。