python - transponer - Reformar una matriz en NumPy
transponer matriz python (1)
Considere una matriz de la siguiente forma (solo un ejemplo):
[[ 0 1]
[ 2 3]
[ 4 5]
[ 6 7]
[ 8 9]
[10 11]
[12 13]
[14 15]
[16 17]]
Su forma es [9,2]. Ahora quiero transformar la matriz para que cada columna se convierta en una forma [3,3], como esta:
[[ 0 6 12]
[ 2 8 14]
[ 4 10 16]]
[[ 1 7 13]
[ 3 9 15]
[ 5 11 17]]
La solución más obvia (y seguramente "no pitónico") es inicializar una matriz de ceros con la dimensión adecuada y ejecutar dos bucles for donde se llenará de datos. Estoy interesado en una solución que se ajuste al idioma ...
a = np.arange(18).reshape(9,2)
b = a.reshape(3,3,2).swapaxes(0,2)
# a:
array([[ 0, 1],
[ 2, 3],
[ 4, 5],
[ 6, 7],
[ 8, 9],
[10, 11],
[12, 13],
[14, 15],
[16, 17]])
# b:
array([[[ 0, 6, 12],
[ 2, 8, 14],
[ 4, 10, 16]],
[[ 1, 7, 13],
[ 3, 9, 15],
[ 5, 11, 17]]])