logo

Transpor uma matriz em linha única em Python

Transpor uma matriz em Python significa virá-la na diagonal, transformando todas as linhas em colunas e todas as colunas em linhas. Por exemplo e uma matriz como [[1 2] [3 4] [5 6]] que possui 3 linhas e 2 colunas torna-se [[1 3 5] [2 4 6]] que possui 2 linhas e 3 colunas após a transposição. Vamos entender os diferentes métodos para fazer isso de forma eficiente.

Usando compreensão de lista

A compreensão da lista é usada para iterar cada elemento da matriz. No exemplo dado, iteramos cada elemento da matriz (m) em uma coluna principal e atribuímos o resultado à matriz rez que é a transposta de m.



não é igual ao mysql
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) 

Saída
[1 3 5] [2 4 6] 

Explicação: Esta expressão cria uma nova matriz tomando cada coluna da original como uma linha da nova. Ele troca linhas por colunas.

EM cante zip

Python Zip retorna um iterador de tuplas onde a i-ésima tupla contém o i-ésimo elemento de cada uma das sequências de argumentos ou iteráveis. Neste exemplo, descompactamos nosso array usando * e depois compactamos para obter a transposição.

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) 

Saída
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Explicação: Este código transpõe a matriz eu usando zip(*m) . O * descompacta as linhas e zip() agrupa elementos em colunas. Cada tupla de saída representa uma coluna da matriz original, trocando efetivamente linhas e colunas.



Usando NumPy

Python NumPy é um pacote de processamento de array de uso geral projetado para manipular com eficiência grandes arrays multidimensionais.

Exemplo 1: O método transpose retorna uma visão transposta da matriz multidimensional passada.

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

Saída
[[1 4] [2 5] [3 6]] 

Explicação: numpy.transpose() troque linhas e colunas da matriz m. Ele converte a matriz original de 2 linhas e 3 colunas em uma com 3 linhas e 2 colunas transpondo-a efetivamente.



Exemplo 2: Usando '.T' após a variável

como bloquear anúncios do youtube no android
Python
import numpy as np m = np.array([[1 2 3] [4 5 6]]) print(m.T) 

Saída
[[1 4] [2 5] [3 6]] 

Explicação: Este código usa NumPy para criar um array 2D m e depois imprime sua transposição usando .T . O .T o atributo troca linhas e colunas convertendo a matriz 2x3 original em uma matriz transposta 3x2.

Usando Itertools

Itertools Python é um módulo que fornece várias funções que funcionam em iteradores para produzir iteradores complexos. chain() é uma função que pega uma série de iteráveis ​​e retorna um iterável.

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') 

Saída
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Explicação: Ele primeiro converte a matriz em uma lista de listas, nivela-a em uma única lista usando chain(*M) e depois reconstrói a matriz transposta cortando cada n-ésimo elemento.

Artigos relacionados:

  • Compreensão da lista
  • Itertools Python
  • Zip Python
  • corrente()
  • tuplas
  • Python NumPy