Я пытаюсь найти лучший способ сопоставления двух осей массива в Python, скорее всего, с использованием Numpy.Чтобы быть более точным: у меня есть C
, который является матрицей H x W x L, и D
, который является матрицей H x W.H и W - это высота и ширина изображения, а L - это, например, набор яркости, который может отображаться на изображении (например, от 0 до 100 ).D
содержит реальную яркость пикселя.
Я хочу добавить все значения, связанные с яркостью, на третьей оси C
пикселей, которые соответствуют яркости в D матрица, например, значение в матрице D
скажет мне, какой индекс использовать для получения значения в матрице C
.
Конечно, я могу легко сделать это с помощью трех циклов:
sum = 0
for row in range(H) :
for column in range(W) :
for luminance in range(L) :
if luminance == D[row, column] :
sum += C[row, column, luminance]
break
Но это неэффективно.Я пытаюсь найти способ сделать это, используя numpy, что-то вроде этого:
import numpy as np
sum = np.sum(C[:, :, np.where(C[:,:] == [D[:,:]])[0][0]))
Я не знаю, должно ли это работать.Я думаю, что может быть способ использовать функцию meshgrid , чтобы легко проходить по пикселям и правильно сопоставлять, вызывая
import numpy as np
sum = np.sum(np.meshgrid(range(H), range(W), f(D)))
где f (D) должно быть что-то, что связано с матрицей D .
Ну, это то, что я пробовал до сих пор, спасибо за вашу помощь, как всегда!