Parece que la pregunta y el ejemplo se originan en el libro Python for Data Analysis de Wes McKinney. Esta característica de transpose
se menciona en el Capítulo 4.1. Transposición de matrices e intercambio de ejes .
Para matrices de mayor dimensión, transpose
aceptará una tupla de números de eje para permutar los ejes (para una mayor flexibilidad).
Aquí "permutar" significa "reorganizar", por lo que reorganizar el orden de los ejes.
Los números en .transpose(1, 0, 2)
determinan cómo se cambia el orden de los ejes en comparación con el original. Al usar .transpose(1, 0, 2)
, queremos decir, "Cambiar el primer eje por el segundo". Si usamos .transpose(0, 1, 2)
, la matriz permanecerá igual porque no hay nada que cambiar; es el orden predeterminado.
El ejemplo en el libro con una (2, 2, 4)
matriz de tamaño no es muy claro ya que el primer y el segundo eje tienen el mismo tamaño. Entonces, el resultado final no parece cambiar, excepto el reordenamiento de las filas arr[0, 1]
y arr[1, 0]
.
Si probamos un ejemplo diferente con una matriz tridimensional y cada dimensión tiene un tamaño diferente, la parte de reordenamiento se vuelve más clara.
In [2]: x = np.arange(24).reshape(2, 3, 4)
In [3]: x
Out[3]:
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
In [4]: x.transpose(1, 0, 2)
Out[4]:
array([[[ 0, 1, 2, 3],
[12, 13, 14, 15]],
[[ 4, 5, 6, 7],
[16, 17, 18, 19]],
[[ 8, 9, 10, 11],
[20, 21, 22, 23]]])
Aquí, los tamaños de matriz originales son (2, 3, 4)
. Cambiamos el 1º y 2º, por lo que se vuelve (3, 2, 4)
de tamaño. Si miramos más de cerca para ver cómo ocurrió exactamente el reordenamiento; las matrices de números parecen haber cambiado en un patrón particular. Usando la analogía del papel de @ RobertB , si tuviéramos que tomar los 2 trozos de números y escribir cada uno en hojas, luego tomar una fila de cada hoja para construir una dimensión de la matriz, ahora tendríamos una matriz de tamaño 3x2x4 , contando desde la capa más externa hasta la más interna.
[ 0, 1, 2, 3] \ [12, 13, 14, 15]
[ 4, 5, 6, 7] \ [16, 17, 18, 19]
[ 8, 9, 10, 11] \ [20, 21, 22, 23]
Podría ser una buena idea jugar con matrices de diferentes tamaños y cambiar diferentes ejes para tener una mejor intuición de cómo funciona.