切片numpy数组与其他数组

时间:2012-11-08 12:43:02

标签: python numpy

我正在尝试提取由y中包含的一组索引指定的numpy数组x的子集,同时仍然保留一些y的索引。举个具体的例子。让y具有形状(10,10,10,3),而x具有形状(7,7,3)x的最后一个维度对应于y的前三个维度的索引信息。也就是说,我想要一个有效的切片操作,结果如下:

for i in x.shape[0]:
    for j in x.shape[1]:
        z[i,j,:] = y[x[i,j,0],x[i,j,1],x[i,j,2],:]

理想情况下,无论x的维数是多少,答案都会有效。

一般来说,yN+1 - 维,形状为(...,N),而xQ+1 - 维度为(...,N) },结果与x具有相同的形状。

这样做的动机是从矢量场中提取矢量子集。

1 个答案:

答案 0 :(得分:4)

这应该合理地运作:

y[x[..., 0], x[..., 1], x[..., 2]]

一般来说:

y[tuple(np.rollaxis(x, -1))]