Python 使用另一个三维阵列索引到三维阵列的最后一个轴
如果我有一个数组x,哪个值与shape(2,3,4)的值相同:Python 使用另一个三维阵列索引到三维阵列的最后一个轴,python,arrays,numpy,Python,Arrays,Numpy,如果我有一个数组x,哪个值与shape(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.71260
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],它不起作用。您可以使用-
写一个小函数来实现缩写?我想用一种简单的方式来实现它,而不是一个函数,就像我在这里发布的问题()。
m,n = y.shape[:2]
out = x[np.arange(m)[:,None,None],np.arange(n)[:,None],y]