Я предполагаю, что есть индексный массив для индексации по последней оси.Давайте назовем это idx
.Для данного образца с данным текстом в вопросе это будет -
idx = np.array([[1,0],[0,2]])
В частности, это было извлечено из цитируемого текста:
1 - это 2-й элемент первого столбца первого ряда, 9 - 1-й элемент второго столбца первого ряда, 0 - 1-й элемент первого столбца второго ряда и8 - это 3-й элемент второго столбца второй строки
. Для решения этой задачи мы будем использовать открытую сетку с np.ogrid
для индексации первых двух осей входного массива -
m,n = idx.shape
I,J = np.ogrid[:m,:n]
out = A[I,J,idx]
Пробный прогон -
In [57]: A
Out[57]:
array([[[5, 1, 5],
[9, 9, 4]],
[[0, 9, 8],
[8, 6, 8]]])
In [59]: idx = np.array([[1,0],[0,2]])
In [60]: m,n = idx.shape
In [61]: I,J = np.ogrid[:m,:n]
In [62]: A[I,J,idx]
Out[62]:
array([[1, 9],
[0, 8]])