如何用Numpy设置一个4d数组和一个2d数组的索引?

问题描述 投票:0回答:1

我前几天刚开始学习numpy和Python,所以如果我犯了什么明显的错误,我很抱歉。

基本上,我想把下面的for循环转换为一个更快的解决方案,我知道这可以用numpy来完成,只是不知道怎么做。我知道这可以用numpy来完成,只是不知道怎么做。

img = np.zeros((height,width,3), np.uint8) #image matrix
indexes = np.zeros((height,width), np.uint8)

for y in range(height):
    for x in range(width):
        img[y][x] = vid[indexes[y][x]][y][x] #for 1 pixel

#"vid" is a 4d array with vid[frameNumber] being one image.

谢谢你的帮助。

python arrays numpy opencv multidimensional-array
1个回答
1
投票

你可以通过以下方法使用索引数组 np.ogrid:

y, x = np.ogrid[:height, :width]
img = vid[indexes[y, x], y, x]

0
投票

我会的

y,x = np.meshgrid(np.arange(height),np.arange(width))
img = vid[indexes, y, x]

print(img.shape)
# output (height, width, 3)
© www.soinside.com 2019 - 2024. All rights reserved.