Reorganizando una matriz numpy 2D en 3D

Tengo una matriz de 12X2 que quiero reorganizar en una matriz de 3x4x2. Específicamente, quiero cambiar

a = np.array(([1,13],[2,14],[3,15],[4,16],[5,17],[6,18],[7,19],[8,20],[9,21],[10,22],[11,23],[12,24])) [[ 1 13] [ 2 14] [ 3 15] [ 4 16] [ 5 17] [ 6 18] [ 7 19] [ 8 20] [ 9 21] [10 22] [11 23] [12 24]]` 

En una matriz que se ve así:

 [[[ 1. 2. 3. 4.] [ 5. 6. 7. 8.] [ 9. 10. 11. 12.]] [[ 13. 14. 15. 16.] [ 17. 18. 19. 20.] [ 21. 22. 23. 24.]]] 

Estaba pensando en un bucle triple nested para, pero la forma en que lo codifiqué no va a funcionar. Y no puedo envolver mi cabeza alrededor de la indexación numpy lo suficiente como para descubrir cómo hacer esto.

Esto es, por supuesto, el código de ejemplo. Quiero modificar esto para usarlo para hacer 3 gráficas de las 3 EOF principales de precipitación global en una cuadrícula de latitud-longitud. Los EOF se extraen de una matriz de 8192×8192 y se colocan en una matriz de 64x128x3. (Solo estoy usando las primeras 3 columnas de la matriz grande. Cada columna es un EOF, y en cada una de ellas, los valores se enumeran por longitud que va a lo largo de la primera latitud, luego se enumera por longitud otra vez que va por la segunda latitud, y así hacia abajo hasta la latitud 128 en la parte inferior de la columna. Por supuesto, mi matriz estará invertida con respecto al mapa base cuando termine, ya que la primera latitud es -87.algo, pero planeo usar np.flipud para arréglalo una vez que esté terminado.

Puedes usar una combinación de np.reshape y np.transpose , así –

 a.reshape(3,4,-1).transpose(2,0,1) 

Entonces, para tu caso real (si lo entendiera correctamente) sería –

 a.reshape(64,128,-1).transpose(2,0,1) 

Tenga en cuenta que la forma de salida en este caso sería (3, 64, 128) sin embargo. Por lo tanto, asumo que el caso de muestra no corresponde adecuadamente a su caso real.

Hay muchas maneras de hacerlo, ¿qué hay de aTreshape(2,3,4) ?

 n [14]: aTreshape(2,3,4) Out[14]: array([[[ 1, 2, 3, 4], [ 5, 6, 7, 8], [ 9, 10, 11, 12]], [[13, 14, 15, 16], [17, 18, 19, 20], [21, 22, 23, 24]]])