Меня действительно смущает индексная логика массивов numpy с несколькими измерениями. Вот пример:
import numpy as np
A = np.arange(18).reshape(3,2,3)
[[[ 0, 1, 2],
[ 3, 4, 5]],
[[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17]]])
это дает мне массив формы (3,2,3), назовите их (x, y, z) в качестве аргумента. Теперь мне нужен массив B с элементами из A, соответствующими x = 0,2, y = 0,1 и z = 1,2. Например,
array([[[ 1, 2],
[4, 5]],
[[13, 14],
[16, 17]]])
Наивно я думал, что
B=A[[0,2],[0,1],[1,2]]
сработает. Но он дает
array([ 2, 104])
и не работает.
A[[0,2],:,:][:,:,[1,2]]
выполняет свою работу. Но мне все еще интересно, что случилось с моей первой попыткой. И как лучше всего делать то, что я хочу?