<jupyter_start><jupyter_text>Arrays transpuestosSi habéis estudiado el álgebra de matrices seguro que ya sabéis qué es la matriz transpuesta de una matriz.Si no es así tranquilos, en seguida entenderéis el concepto. Fijaros en este ejemplo: Matriz ${A}$$\begin{pmatrix}1 & 2\\3 & 4\\5 & 6 \end{pmatrix}$ Matriz ${A^t}$$\begin{pmatrix}1 & 3 & 5\\2 & 4 & 6\\\end{pmatrix}$Tal como se puede apreciar una matriz transpuesta es una matriz que refleja a otra, de manera que las columnas se vuelven filas y las filas columnas.Evidentemente la transpuesta de una matriz transpuesta es equivalente a la original:  ${(A^t)^t}$ = ${A}$Lo interesante es que con Numpy podemos conseguir el array transpuesto muy fácilmente.<jupyter_code>import numpy as np

arr = np.array([[1,2,3],[4,5,6]])

arr
# Tranpuesto
arr.T
# Tranpuesta de la transpuesta
arr.T.T<jupyter_output><empty_output><jupyter_text>Por cierto, la función **swapaxes** sirve precisamente para intercambiar la posición de los dos ejes de un array, así que sirve para lo mismo:<jupyter_code># Intercambiar las filas por las columnas
arr.swapaxes(0,1)
arr.swapaxes(1,0) # Es lo mismo<jupyter_output><empty_output><jupyter_text>Evidentemente también podemos encontrar el array transpuesto de un array de 3 o más dimensiones:<jupyter_code># Creamos un array 3d
arr_3d = np.arange(8).reshape(2,2,2)
arr_3d
# Buscamos el array transpuesto
arr_3d.T<jupyter_output><empty_output><jupyter_text>O intercambiar los ejes con **swapaxes**, por ejemplo la primera dimensión por la tercera, que en nuestro caso sería equivalente al array transpuesto:<jupyter_code>arr_3d.swapaxes(0,2)<jupyter_output><empty_output><jupyter_text>En cambio no lo sería intercambiar la primera por la segunda:<jupyter_code>arr_3d.swapaxes(0,1)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09451901565995526, 'fraction_numerical': 0.02069351230425056, 'mean_word_length': 6.302040816326531, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 21, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '365467', 'license': 'MIT', 'n_tokens_mistral': 674, 'n_tokens_neox': 651, 'n_words': 201, 'path': 'MaterialCursoPython/Fase 5 - Modulos externos/Tema 19 - Numpy/Teasers/07 - Arrays transpuestos.ipynb', 'repo_name': 'mangrovex/CursoPython', 'size': '1788'}