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

时间:2015-02-10 10:05:32

标签: python arrays numpy slice

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

#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]] 

返回

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

现在我试图对上述操作进行矢量化。对我来说,合乎逻辑的是设置

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

但是会返回

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

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

提前致谢

1 个答案:

答案 0 :(得分:3)

您只需要:

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

相关:Indexing Multi-dimensional arrays