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

时间:2018-12-16 19:39:41

标签: python arrays numpy

我正在尝试比较两个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

1 个答案:

答案 0 :(得分:1)

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

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