Python 索引numpy数组

Python 索引numpy数组,python,arrays,numpy,Python,Arrays,Numpy,考虑以下场景 import numpy as np x = np.random.randint(0,21,size=(10,64,64)) y = np.random.rand(10,21,64,64) z = np.empty((10,64,64)) for i in range(10): for j in range(64): for k in range(64): z[i][j][k] = y[i][x[i][j][k]][j][k]

考虑以下场景

import numpy as np
x = np.random.randint(0,21,size=(10,64,64))
y = np.random.rand(10,21,64,64)

z = np.empty((10,64,64))

for i in range(10):
    for j in range(64):
        for k in range(64):
            z[i][j][k] = y[i][x[i][j][k]][j][k]
使用numpy索引实现此行为的推荐方法(就速度而言)是什么?

这正是的目的,您只需首先重新设置y轴的范围

In [6]: z2=np.choose(x,np.rollaxis(y,1))

In [7]: np.allclose(z,z2)
Out[7]: True
它比循环法快15倍