Numpy многомерный массив, подсчитайте внутренние массивы, которые равны - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь сравнить два трехмерных массива и посчитать, сколько внутренних массивов равны.

Я сравниваю 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 голосов
/ 16 декабря 2018

Проверьте, равны ли все три значения цвета для каждого пикселя, а затем посчитайте равные пиксели, суммируя истинные значения:

(a == b).all(axis=-1).sum()
# 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...