我试图找到在Python中匹配两个数组轴的最佳方法,很可能是使用Numpy。
更准确地说:
我有C
,它是一个H x W x L矩阵和D
,它是一个H x W矩阵。H和W是图像的高度和宽度,L是例如可以在图像中显示的亮度集(0到100)。D
包含像素的真实亮度。你知道吗
我想把所有与亮度匹配的像素在C
第三轴上的亮度值相加,例如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矩阵有关。你知道吗
好吧,这就是我迄今为止所尝试的,谢谢你一如既往的帮助!你知道吗
为什么不把
D
的所有值相加呢?有没有可能C
中的亮度不会出现在D
中,这是为什么?你知道吗无论如何,另一种实现方法是重复
C
的值以匹配D
的形状,然后只对匹配的值求和,前提是C的每个像素没有重复的值。你知道吗我正在使用
numpy.meshgrid
添加一个答案。你知道吗我们可以通过以下方式做到这一点:
这样,
D
中的值就可以告诉C
使用哪个索引来获得正确的值。你知道吗相关问题 更多 >
编程相关推荐