-
(a[np.arange(a.shape[0])[:,None],:,b2]).transpose(0,2,1)
-
In [191]: a
Out[191]:
array([[[7, 8, 5, 2, 0],
[6, 7, 0, 7, 1],
[7, 6, 5, 4, 0]],
[[8, 0, 5, 5, 7],
[4, 3, 4, 0, 1],
[8, 6, 3, 2, 4]],
[[3, 2, 7, 3, 7],
[4, 3, 0, 1, 5],
[4, 3, 7, 8, 7]]])
In [192]: b2
Out[192]:
array([[1, 2, 4, 3, 0],
[4, 2, 0, 1, 3],
[1, 3, 4, 0, 2]])
In [193]: (a[np.arange(a.shape[0])[:,None],:,b2]).transpose(0,2,1)
Out[193]:
array([[[8, 5, 0, 2, 7],
[7, 0, 1, 7, 6],
[6, 5, 0, 4, 7]],
[[7, 5, 8, 0, 5],
[1, 4, 4, 3, 0],
[4, 3, 8, 6, 2]],
[[2, 3, 7, 3, 7],
[3, 1, 5, 4, 0],
[3, 8, 7, 4, 7]]])