3

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

一般来说,y将是N+1-维的,具有形状(...,N),而x将是-Q+1维的,具有形状(...,N),结果将具有与 相同的形状x

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

4

1 回答 1

4

这应该工作得相当好:

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

一般来说:

y[tuple(np.rollaxis(x, -1))]
于 2012-11-08T13:02:33.663 回答