Python Numpy多维数组,计算相等的内部数组
我试着比较两个三维数组,计算有多少个内部数组是相等的 我比较了一张图片的两个补丁,想知道有多少像素是相等的,而不是多少颜色值是相等的。如果它是高效的,那就太好了,所以我用的是numpy。我知道如何与for循环进行比较,但速度太慢了 但我只能按元素计算,以下是我的代码片段: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],
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%的折扣,则该值相等。