我有一个形状为a
的数组[3,x,y,z,n]
(三个4d图像)。第二个数组b
的形状为[x,y,z]
,其中包含我要从a
的第一维中选择的索引(因此b
的值在0到2)。
我想要的结果将是[x,y,z,n]
的形状。我该如何在numpy中做到这一点?
答案 0 :(得分:1)
a[b,np.arange(x)[:,None,None],np.arange(y)[:,None],np.arange(z)]
一种简短的表达方式是-
a[tuple([b] + np.ogrid[:x,:y,:z])]
使用内置np.take_along_axis
的NumPy通过在后台进行肮脏的工作来执行高级索引-
np.take_along_axis(a,b[None,...,None],axis=0)[0]