La preservación de las dimensiones de una rebanada de una matriz 3d Numpy
Pregunta
Tengo una matriz 3d, a
, de a.shape = (10, 10, 10)
forma digamos
Cuando el corte en lonchas, las dimensiones son squeezed
automáticamente es decir.
a[:,:,5].shape = (10, 10)
Me gustaría preservar el número de dimensiones sino también asegurar que la dimensión que fue exprimido es el que muestra 1 es decir.
a[:,:,5].shape = (10, 10, 1)
He pensado en la refundición de la matriz y pasando ndmin
pero que aumenta las dimensiones adicionales del inicio de la tupla forma, independientemente de donde vino de la rodaja en el a
matriz.
Solución
a[:,:,[5]].shape
# (10,10,1)
a[:,:,5]
es un ejemplo de rebanar básica .
a[:,:,[5]]
es un ejemplo de número entero array indexación - combinado con rebanar básica . Cuando se utiliza matriz de enteros indexación de la forma resultante es siempre "idéntico a la (broadcast) indexación de formas de matriz". Desde [5]
(como una matriz) tiene (1,)
forma,
extremos a[:,:,[5]]
teniendo (10,10,1)
forma.