我正在尝试从一个NumPy数组
理想情况下,答案应该不受
通常来说,
这样做的动机是从向量场中提取子集。
y
中提取一个子集,该子集由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
相同。这样做的动机是从向量场中提取子集。
y
的维数事先已知的情况下才能使用。第二个版本是通用的,但很慢(在我的一个测试中慢了20倍)。 - amaurea