Der Standard-Python-Listentyp kann ein zweidimensionales Array durch eine Liste von Listen darstellen.
In diesem Abschnitt wird erklärt, wie man die Zeilen und Spalten dieses zweidimensionalen Arrays vertauscht.
- In NumPy-Array umwandeln
.T
Transponieren Sie damit.
pandas.DataFrame
Konvertieren Sie in dies.T
Transponieren Sie damit.
- Transposition mit eingebauter Funktion zip()
Es ist einfacher, NumPy oder Pandas zu verwenden, aber wenn Sie NumPy oder Pandas nicht nur für die Transposition importieren wollen, können Sie die Funktion zip() zum Transponieren verwenden.
Das ursprüngliche zweidimensionale Array ist wie folgt definiert
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
Konvertiert in NumPy-Array ndarray und transponiert mit .T
Erzeugt ein NumPy-Array ndarray aus dem ursprünglichen zweidimensionalen Array und erhält das transponierte Objekt mit dem Attribut .T.
Wenn Sie am Ende ein Objekt vom Typ Python-Liste haben wollen, wandeln Sie es mit der Methode tolist() in eine Liste um.
arr_t = np.array(l_2d).T
print(arr_t)
print(type(arr_t))
# [[0 3]
# [1 4]
# [2 5]]
# <class 'numpy.ndarray'>
l_2d_t = np.array(l_2d).T.tolist()
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
Zusätzlich zum Attribut .T können auch die ndarray-Methode transpose() und die Funktion numpy.transpose() verwendet werden.
Konvertiert in pandas.DataFrame und transponiert mit .T
Erzeugen Sie einen pandas.DataFrame aus dem ursprünglichen zweidimensionalen Array und erhalten Sie das transponierte Objekt mit dem Attribut .T.
Wenn Sie am Ende ein Objekt vom Typ Python-Liste haben wollen, holen Sie sich numpy.ndarray mit dem Attribut values und konvertieren Sie es dann mit der Methode tolist() in eine Liste.
df_t = pd.DataFrame(l_2d).T
print(df_t)
print(type(df_t))
# 0 1
# 0 0 3
# 1 1 4
# 2 2 5
# <class 'pandas.core.frame.DataFrame'>
l_2d_t = pd.DataFrame(l_2d).T.values.tolist()
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
Transposition mit eingebauter Funktion zip()
Transponiert ein zweidimensionales Array mit Hilfe der eingebauten Funktion zip().
zip() ist eine Funktion, die einen Iterator zurückgibt, der die Elemente mehrerer Iterables (Listen, Tupel usw.) zusammenfasst. Sie wird z. B. verwendet, wenn mehrere Listen in einer for-Schleife ausgeführt werden.
Darüber hinaus verwendet die Funktion einen Mechanismus, mit dem die Liste erweitert und weitergegeben werden kann, wenn das Funktionsargument mit einem Sternchen gekennzeichnet ist.
- VERBUNDEN:Erweitern und Übergeben von Listen, Tupeln und Wörterbüchern als Funktionsargumente in Python
Umsetzungen können wie folgt vorgenommen werden.
l_2d_t_tuple = list(zip(*l_2d))
print(l_2d_t_tuple)
print(type(l_2d_t_tuple))
# [(0, 3), (1, 4), (2, 5)]
# <class 'list'>
print(l_2d_t_tuple[0])
print(type(l_2d_t_tuple[0]))
# (0, 3)
# <class 'tuple'>
Die Elemente darin sind ohnehin Tupel. Wenn Sie also eine Liste daraus machen wollen, verwenden Sie list(), das ein Tupel in eine Liste in Listenauffassungsschreibweise umwandelt.
- VERBUNDEN:Wie man Python-Listenauflösungen verwendet
- VERBUNDEN:Listen und Tupel in Python ineinander umwandeln: list(), tuple()
l_2d_t = [list(x) for x in zip(*l_2d)]
print(l_2d_t)
print(type(l_2d_t))
# [[0, 3], [1, 4], [2, 5]]
# <class 'list'>
print(l_2d_t[0])
print(type(l_2d_t[0]))
# [0, 3]
# <class 'list'>
Im Folgenden wird das Verfahren Schritt für Schritt beschrieben.
Die Elemente der Liste werden mit einem Sternchen aufgeklappt, die aufgeklappten Elemente werden mit der Funktion zip() gruppiert, und dann wird das Tupel mit der Listenauffassungsnotation in eine Liste umgewandelt.
print(*l_2d)
# [0, 1, 2] [3, 4, 5]
print(list(zip([0, 1, 2], [3, 4, 5])))
# [(0, 3), (1, 4), (2, 5)]
print([list(x) for x in [(0, 3), (1, 4), (2, 5)]])
# [[0, 3], [1, 4], [2, 5]]