Редактировать: игнорировать над линией. Получить индекс массива, который вы хотите из вашего 2D-массива, а затем просто получить этот индекс один из 3D-массива.
index3d = arr2d[i][j]
new_arr = arr3d[index3d] # gives the 2D array at the 3D array's index 'index3d'
Пример:
# shape of arr3d = 3,2,3
arr3d = [[[2,4,6],[8,10,12]],[[3,6,9],[12,15,18]],[[1,6,2],[5,3,4]]]
# shape of arr2d = 2,3, values 0-2
arr2d = [[0,1,0],[2,1,2]]
# select arr3d index from arr2d
index3d = arr2d[1][0]
# get 2D array from arr3d at index3d
new_arr = arr3d[index3d]
# prints:
# [[1, 6, 2], [5, 3, 4]]
print(new_arr)
Редактировать:
# shape of arr3d = 3,2,3
arr3d = [[[2,4,6],[8,10,12]],
[[3,6,9],[12,15,18]],
[[1,6,2],[5,3,4]]]
# shape of arr2d = 2,3, values 0-2
arr2d = [[0,1,0],
[2,1,2]]
new_arr = [[],[]]
# append the values from the correct 2D array in arr3d
for row in range(len(arr2d)):
for col in range(len(arr2d[row])):
i = arr2d[row][col] # i selects the correct 2D array from arr3d
new_arr[row].append(arr3d[i][row][col]) # get the same row/column from the new array
# prints:
# [[2, 6, 6], [5, 15, 4]]
print(new_arr)