Skip to content

Transponieren einer 2D-Liste in Python (Vertauschen von Zeilen und Spalten)

Python

Ein zweidimensionales Array kann mithilfe des in Python integrierten Listentyps durch eine Liste von Listen dargestellt werden.

Hier sind einige Möglichkeiten, die Zeilen und Spalten dieser zweidimensionalen Liste möglich.

  • In numpy.ndarray konvertieren und mit T transponieren
  • In pandas.DataFrame konvertieren und mit T transponieren
  • Transponieren mit eingebauter Funktion zip()

Es ist einfacher, NumPy und Pandas zu verwenden, aber wenn SIE NumPy oder Pandas nicht nur zum Transponieren importieren möchten, can SIE die Funktion zip() verwenden.

Die ursprüngliche zweidimensionale Liste ist wie folgt definiert:

import numpy as np
import pandas as pd

l_2d = [[0, 1, 2], [3, 4, 5]]

In numpy.ndarray konvertieren und mit T transponieren

Erstellen Sie ein NumPy-Array ndarray aus der ursprünglichen 2D-Liste und erhalten Sie das transponierte Objekt mit dem T-Attribut.

Wenn Sie ein Objekt vom Typ Liste möchten, konvertieren Sie es mit der Methode tolist() in eine Liste.

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 T-Attribut can SIE auch die Methode transpose() von ndarray und die Funktion numpy.transpose() verwenden. Bitte lesen Sie den folgenden Artikel für Details wie die Verarbeitung für mehrdimensionale Arrays mit mehr als drei Dimensionen.

In pandas.DataFrame konvertieren und mit T transponieren

Erstellen Sie pandas.DataFrame aus der ursprünglichen 2D-Liste und erhalten Sie das transponierte Objekt mit dem T-Attribut.

Wenn Sie ein Objekt vom Listentyp möchten, rufen Sie numpy.ndarray mit dem Attributwerte ab und konvertieren Sie es 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'>

Transponieren mit eingebauter Funktion zip()

Sie können eine zweidimensionale Liste mit der eingebauten Funktion zip() transponieren.

zip() ist eine Funktion, die einen Iterator zurückgibt, der mehrere Iterables (Liste, Tupel usw.) zusammenfasst.

Verwenden Sie außerdem *, mit dem SIE sterben Liste entpacken und Ihre Elemente an die Funktion übergeben can.

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

Elemente sind Tupel. Wenn Sie Eine Liste erstellen möchten, verwenden Sie list() und List Comprehensions.

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

Die Notebooks sind wie folgt.

Die Elemente der Liste werden mit * expandiert, die expandierten Elemente werden mit der Funktion zip() kombiniert, und Tupel wird in der List Comprehension 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]]