numpy多维高级索引

时间:2018-11-23 10:16:09

标签: numpy

我有一个形状为a的数组[3,x,y,z,n](三个4d图像)。第二个数组b的形状为[x,y,z],其中包含我要从a的第一维中选择的索引(因此b的值在0到2)。
我想要的结果将是[x,y,z,n]的形状。我该如何在numpy中做到这一点?

1 个答案:

答案 0 :(得分:1)

使用advanced-indexing-

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]