Transponieren einer Matrix in Python
Matrizen können mit mehrdimensionalen Listen in Python dargestellt werden. Einmal ausgedrückt, können wir alle Operationen durchführen, die wir über Matrizen in der mathematischen Theorie durchführen können, wie z. B. Matrixmultiplikation, Matrixaddition und Subtraktion.
In diesem Artikel wird über eine solche Operation gesprochen. Anhand einiger relevanter Beispiele lernen wir, wie man eine Matrix mit Python transponiert.
Transponieren einer Matrix in Python
Um eine Matrix in Python zu transponieren, können wir eine einfache Stub-Funktion schreiben und for
-Schleifen zum Transponieren einer Eingabematrix verwenden.
def transpose(matrix):
if matrix == None or len(matrix) == 0:
return []
result = [[None for i in range(len(matrix))] for j in range(len(matrix[0]))]
for i in range(len(matrix[0])):
for j in range(len(matrix)):
result[i][j] = matrix[j][i]
return result
def print_matrix(matrix):
for row in matrix:
print(*row)
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)
Ausgabe:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
Die zeitliche und räumliche Komplexität der obigen Methode ist O(mn)
, wobei m
die Anzahl der Zeilen in der Eingabematrix und n
die Anzahl der Spalten in der Eingabematrix ist.
Die Zeitkomplexität beträgt O(mn)
, weil wir über die gesamte Eingangsmatrix iterieren. Die Raumkomplexität ist O(mn)
, weil wir eine Kopie der Eingabematrix erstellen und in einer separaten Variablen speichern.
Die obige Stub-Funktion erzeugt zuerst eine temporäre Matrix der Größe n x m
mit None
-Werten, wenn die Form der Eingabematrix m x n
ist. Dabei ist m
die Anzahl der Zeilen in der Eingabematrix und n
die Anzahl der Spalten in der Eingabematrix.
Als nächstes iteriert es über die Eingabematrix mit zwei verschachtelten for
-Schleifen. Innerhalb der beiden for
-Schleifen werden die None
-Werte durch die tatsächlichen Werte aus der Eingabematrix ersetzt (result[i][j] = matrix[j][i]
). Zuletzt wird die temporäre Matrix als Ausgabe zurückgegeben.
Anstatt zwei verschachtelte for
-Schleifen zum Füllen der temporären Matrix zu verwenden, können wir die Transponierungslogik auch in einer einzigen Zeile schreiben, um Platz zu sparen.
def transpose(matrix):
if matrix == None or len(matrix) == 0:
return []
return [[matrix[i][j] for i in range(len(matrix))] for j in range(len(matrix[0]))]
def print_matrix(matrix):
for row in matrix:
print(*row)
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
result = transpose(array)
print_matrix(result)
Ausgabe:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
Die zeitliche und räumliche Komplexität dieser Lösung ist ebenfalls die gleiche wie die der vorherigen Lösung, O(mn)
.
Transponieren einer Matrix in Python mit dem NumPy
-Modul
NumPy
ist ein Python-Paket, das reich an Dienstprogrammen ist, um mit großen mehrdimensionalen Matrizen und Arrays herumzuspielen und sowohl komplexe als auch einfache mathematische Operationen damit durchzuführen. Diese Dienstprogramme sind nicht nur dynamisch für die Eingaben, sondern auch hochoptimiert und schnell.
Mit dem Modul NumPy
in Python können wir eine Matrix auf zwei Arten transponieren. Die erste besteht darin, das T
-Attribut eines NumPy
-Arrays zu verwenden, und die zweite ist der Aufruf der Methode transpose()
eines NumPy
-Arrays.
Lesen Sie den folgenden Python-Code, um zu verstehen, wie die beiden genannten Methoden verwendet werden.
Hinweis: Um diese Utilities verwenden zu können, müssen wir zunächst die Eingabematrix mit der Methode numpy.array()
in ein Array NumPy
umwandeln. Um mehr über diese Methode zu erfahren, klicken Sie hier.
import numpy as np
array = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
array = np.array(array)
print(array.T) # First Method
print(array.transpose()) # Second Method
Ausgabe:
[[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]
[ 5 10 15]]
[[ 1 6 11]
[ 2 7 12]
[ 3 8 13]
[ 4 9 14]
[ 5 10 15]]
Das transpose()
akzeptiert ein axes
-Argument, das verwendet werden kann, um einige coole Transponierungs-Modifikationen über einem NumPy
-Array durchzuführen. Um mehr über diese Methode zu erfahren, klicken Sie hier.