Estoy realmente confundido por la lógica de índice de las matrices numpy con varias dimensiones. Aquí está un ejemplo:Confusión de índice en matrices 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]]])
esto me da una matriz de forma (3,2,3), llamar a ellos (x, y, z) para bien del argumento. Ahora quiero una matriz B con los elementos de A correspondientes a x = 0,2 y = 0,1 yz = 1,2. Al igual que
array([[[ 1, 2],
[4, 5]],
[[13, 14],
[16, 17]]])
Ingenuamente pensé que
B=A[[0,2],[0,1],[1,2]]
haría el trabajo. Pero da
array([ 2, 104])
y no funciona.
A[[0,2],:,:][:,:,[1,2]]
hace el trabajo. Pero todavía me pregunto qué pasa con mi primer intento. ¿Y cuál es la mejor manera de hacer lo que quiero hacer?
Mi opinión personal: ambas formas activan la indexación avanzada de Numpy. En el contexto de indexación avanzada, A [[0,2], [0,1], [1,2]] se interpreta como "seleccionado cada número de indexación en cada una de sus dimensiones (un enfoque un tanto codicioso). –