logo

Transponer una matriz en una sola línea en Python

Transponer una matriz en Python significa voltearla sobre su diagonal, convirtiendo todas las filas en columnas y todas las columnas en filas. Por ejemplo e una matriz como [[1 2] [3 4] [5 6]] que tiene 3 filas y 2 columnas se convierte en [[1 3 5] [2 4 6]] que tiene 2 filas y 3 columnas después de la transposición. Comprendamos diferentes métodos para hacer esto de manera eficiente.

Usar la comprensión de listas

La comprensión de listas se utiliza para recorrer cada elemento de la matriz. En el ejemplo dado, iteramos a través de cada elemento de la matriz (m) en forma de columna principal y asignamos el resultado a la matriz rez que es la transpuesta de m.



teclas modificadoras
Python
m = [[1 2] [3 4] [5 6]] res = [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))] for row in res: print(row) 

Producción
[1 3 5] [2 4 6] 

Explicación: Esta expresión crea una nueva matriz tomando cada columna del original como una fila en la nueva. Intercambia filas con columnas.

EN canta zip

Python Zip devuelve un iterador de tuplas donde la i-ésima tupla contiene el i-ésimo elemento de cada una de las secuencias de argumentos o iterables. En este ejemplo, descomprimimos nuestra matriz usando * y luego la comprimimos para obtener la transposición.

Python
m = [(1 2 3) (4 5 6) (7 8 9) (10 11 12)] t_m = zip(*m) for row in t_m: print(row) 

Producción
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Explicación: Este código transpone la matriz. metro usando código postal(*m) . El * descomprime las filas y cremallera() agrupa elementos en columnas. Cada tupla de salida representa una columna de la matriz original, intercambiando efectivamente filas y columnas.



Usando NumPy

Python NumPy es un paquete de procesamiento de matrices de propósito general diseñado para manipular eficientemente grandes matrices multidimensionales.

Ejemplo 1: El método de transposición devuelve una vista transpuesta de la matriz multidimensional pasada.

Python
import numpy m = [[1 2 3] [4 5 6]] print(numpy.transpose(m)) 

Producción
[[1 4] [2 5] [3 6]] 

Explicación: numpy.transpose() intercambiar filas y columnas de la matriz m. Convierte la matriz original de 2 filas y 3 columnas en una con 3 filas y 2 columnas transponiéndola efectivamente.



Ejemplo 2: Usando '.T' después de la variable

subprograma subprograma
Python
import numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T) 

Producción
[[1 4] [2 5] [3 6]] 

Explicación: Este código usa NumPy para crear una matriz 2D m y luego imprime su transposición usando .T . El .T El atributo intercambia filas y columnas convirtiendo la matriz original de 2x3 en una matriz transpuesta de 3x2.

Usando Itertools

Python itertools es un módulo que proporciona varias funciones que funcionan en iteradores para producir iteradores complejos. chain() es una función que toma una serie de iterables y devuelve uno iterable.

Python
from itertools import chain import time import numpy as np def transpose2(M): M = M.tolist() n = len(M[0]) L = list(chain(*M)) return [L[i::n] for i in range(n)] m = np.array([[1 2 3] [4 5 6]]) start = time.time_ns() res = transpose2(m) end = time.time_ns() print(res) print('Time taken' end - start 'ns') 

Producción
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Explicación: Primero convierte la matriz en una lista de listas, la aplana en una sola lista usando chain(*M) y luego reconstruye la matriz transpuesta dividiendo cada enésimo elemento.

Artículos relacionados:

  • Comprensión de listas
  • Herramientas iterativas de Python
  • Cremallera de pitón
  • cadena()
  • tuplas
  • Número de Python