切片多维 numpy 数组以获得向量

Slicing multidimensional numpy array to obtain a vector

在这个例子中,我试图通过从多维数组中选择相关元素来创建一个向量。

#data
n=3
rng = 4
x = np.array([0,1,2],dtype=int)
y = np.array([0,3,1],dtype=int)
P = np.reshape(np.arange(n*rng*rng),(n,rng,rng))

output = np.zeros(n)
for i in range(n):
    output[i] = P[i,x[i],y[i]] 

这个returns

array([  0.,  23.,  41.]) 

现在我正在尝试向量化上述操作。对我来说,合乎逻辑的事情是设置

output = P[0:n,x,y]

但是这个returns

array([[ 0,  7,  9],
       [16, 23, 25],
       [32, 39, 41]])

任何人都可以解释这里发生了什么以及我应该怎么做才能获得预期的输出?

提前致谢

您只需要:

>>> P[np.arange(n), x, y]
array([ 0, 23, 41])

相关:Indexing Multi-dimensional arrays