如果我有一个数组 x ,其值如下所示(2,3,4):
array([[[ 0.15845319, 0.57808432, 0.05638804, 0.56237656],
[ 0.73164208, 0.80562342, 0.64561066, 0.15397456],
[ 0.34734043, 0.88063258, 0.4863103 , 0.09881028]],
[[ 0.35823078, 0.71260357, 0.49410944, 0.94909165],
[ 0.02730397, 0.67890392, 0.74340148, 0.47434223],
[ 0.02494292, 0.59827256, 0.20550867, 0.30859339]]])
我有一个索引数组 y ,其形状为(2,3,3),值为:
array([[[0, 2, 2],
[2, 0, 2],
[0, 0, 2]],
[[1, 2, 1],
[1, 1, 1],
[1, 2, 2]]])
所以我可以使用 x [0,0,y [0] [0]] 来索引数组 x ,它将生成如下输出:
array([ 0.15845319, 0.05638804, 0.05638804])
我的问题是:有没有简单的方法可以做到这一点?我已经尝试过了 x [y] ,它不起作用。
答案 0 :(得分:1)
您可以使用fancy-indexing
-
m,n = y.shape[:2]
out = x[np.arange(m)[:,None,None],np.arange(n)[:,None],y]