我正在尝试找到在Python中匹配两个数组轴的最佳方法,最有可能使用Numpy。更精确地说:我有C
一个是H xW x L矩阵和D
哪个是H xW矩阵。H和W是图像的高度和宽度,L是例如可以在图像中显示的亮度的集合(例如0至100)。D
包含像素的实际亮度。
我想添加所有与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矩阵有关。
好吧,这是我到目前为止尝试过的,感谢您一如既往的帮助!
我碰碰这个线程,以包含一个答案numpy.meshgrid
。
一个人可以做到这一点:
import numpy as np
lines, columns = np.meshgrid(range(H), range(W), indexing='ij')
sum = np.sum(C[lines, columns, D])
这样,in中的值将D
告诉您使用哪个索引C
来获取正确的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句