我正在尝试比较两个3维数组,并计算有多少个内部数组相等。
我正在比较一张图片的2个色块,想知道多少像素相等,而不是多少颜色值相等。如果效率很高,那就太好了,所以我正在使用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
答案 0 :(得分:1)
首先检查每个像素的所有三个颜色值是否相等,然后通过对真实值求和来计数相等的像素:
(a == b).all(axis=-1).sum()
# 4