logo

Transponieren Sie eine Matrix in einer einzelnen Zeile in Python

Das Transponieren einer Matrix in Python bedeutet, sie über ihre Diagonale umzudrehen und so alle Zeilen in Spalten und alle Spalten in Zeilen umzuwandeln. Zum Beispiel Eine Matrix wie [[1 2] [3 4] [5 6]] mit 3 Zeilen und 2 Spalten wird nach der Transponierung zu [[1 3 5] [2 4 6]] mit 2 Zeilen und 3 Spalten. Lassen Sie uns verschiedene Methoden verstehen, um dies effizient zu tun.

Verwendung des Listenverständnisses

Das Listenverständnis wird verwendet, um jedes Element in der Matrix zu durchlaufen. Im gegebenen Beispiel iterieren wir spaltenweise durch jedes Element der Matrix (m) und weisen das Ergebnis der rez-Matrix zu, die die Transponierte von m ist.



Matrixprogramm in C-Sprache
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) 

Ausgabe
[1 3 5] [2 4 6] 

Erläuterung: Dieser Ausdruck erstellt eine neue Matrix, indem er jede Spalte des Originals als Zeile in die neue Matrix übernimmt. Es vertauscht Zeilen mit Spalten.

IN zip singen

Python Zip gibt einen Iterator von Tupeln zurück, wobei das i-te Tupel das i-te Element aus jeder der Argumentsequenzen oder Iterables enthält. In diesem Beispiel entpacken wir unser Array mit * und komprimieren es dann, um die Transponierung zu erhalten.

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) 

Ausgabe
(1 4 7 10) (2 5 8 11) (3 6 9 12) 

Erläuterung: Dieser Code transponiert die Matrix M verwenden Postleitzahl(*m) . Das * entpackt die Zeilen und Reißverschluss() gruppiert Elemente spaltenweise. Jedes Ausgabetupel stellt eine Spalte der ursprünglichen Matrix dar und vertauscht effektiv Zeilen und Spalten.



Verwenden von NumPy

Python NumPy ist ein Allzweck-Array-Verarbeitungspaket, das für die effiziente Bearbeitung großer mehrdimensionaler Arrays entwickelt wurde.

Beispiel 1: Die Transpose-Methode gibt eine transponierte Ansicht der übergebenen mehrdimensionalen Matrix zurück.

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

Ausgabe
[[1 4] [2 5] [3 6]] 

Erklärung: numpy.transpose() Vertauschen Sie Zeilen und Spalten der Matrix m. Es wandelt die ursprüngliche Matrix aus 2 Zeilen und 3 Spalten in eine mit 3 Zeilen und 2 Spalten um und transponiert sie effektiv.



Beispiel 2: Verwenden Sie „.T“ nach der Variablen

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

Ausgabe
[[1 4] [2 5] [3 6]] 

Erläuterung: Dieser Code verwendet NumPy, um ein 2D-Array m zu erstellen, und druckt dann seine Transponierung mit aus .T . Der .T Das Attribut vertauscht Zeilen und Spalten und wandelt die ursprüngliche 2x3-Matrix in eine 3x2-transponierte Matrix um.

Verwendung von Itertools

Python itertools ist ein Modul, das verschiedene Funktionen bereitstellt, die auf Iteratoren arbeiten, um komplexe Iteratoren zu erstellen. chain() ist eine Funktion, die eine Reihe von Iterables entgegennimmt und ein Iterable zurückgibt.

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

Ausgabe
[[1 4] [2 5] [3 6]] Time taken 9813 ns 

Erläuterung: Zuerst wird die Matrix in eine Liste von Listen konvertiert, sie mithilfe von chain(*M) in eine einzelne Liste reduziert und dann die transponierte Matrix neu erstellt, indem jedes n-te Element zerlegt wird.

Verwandte Artikel:

  • Listenverständnis
  • Python-Itertools
  • Python Zip
  • Kette()
  • Tupel
  • Python NumPy