Verwissel rijen en kolommen van een tweedimensionale array van het Python lijsttype

Bedrijf

Het standaard Python lijsttype kan een tweedimensionale array voorstellen door een lijst van lijsten.

In dit gedeelte wordt uitgelegd hoe de rijen en kolommen van deze tweedimensionale matrix verwisseld kunnen worden.

    1. Converteren naar NumPy matrix
    2. .TTransponeer met dit.
    1. pandas.DataFrameConverteer naar dit
    2. .TTransponeer met dit.
  • Transpositie met ingebouwde functie zip()

Het is gemakkelijker om NumPy of pandas te gebruiken, maar als u NumPy of pandas niet alleen voor de transpositie wilt importeren, kunt u de zip()-functie gebruiken om te transponeren.

De oorspronkelijke tweedimensionale matrix is als volgt gedefinieerd

import numpy as np
import pandas as pd

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

Geconverteerd naar NumPy array ndarray en getransponeerd met .T

Genereert een NumPy array ndarray van de originele tweedimensionale array en verkrijgt het getransponeerde object met het .T attribuut.

Als je uiteindelijk een Python object van het lijst-type wilt, zet het dan om in een lijst met de methode tolist().

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

Naast het .T-attribuut kunnen ook de ndarray-methode transpose() en de functie numpy.transpose() worden gebruikt.

Geconverteerd naar pandas.DataFrame en getransponeerd met .T

Genereer een pandas.DataFrame uit de oorspronkelijke tweedimensionale matrix en verkrijg het getransponeerde object met het .T attribuut.

Als je uiteindelijk een Python object van het lijst-type wilt, krijg dan numpy.ndarray met het waarden attribuut, en converteer het dan naar een lijst met de tolist() methode.

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

Transpositie met ingebouwde functie zip()

Transponeert een tweedimensionale matrix met behulp van de ingebouwde functie zip().

zip() is een functie die een iterator teruggeeft die de elementen van meerdere iterables (lijsten, tuples, enz.) samenvat. Ze wordt bijvoorbeeld gebruikt wanneer meerdere lijsten in een for-lus worden uitgevoerd.

Bovendien maakt de functie gebruik van een mechanisme waarbij de lijst kan worden uitgebreid en doorgegeven indien het functieargument met een sterretje is gemarkeerd.

Transposities kunnen als volgt worden gemaakt.

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

Zoals het nu is, zijn de elementen binnenin tupels. Als je er een lijst van wilt maken, gebruik dan list(), dat een tupel converteert naar een lijst in list comprehension notatie.

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

Hieronder volgt een stapsgewijze uitsplitsing van het proces.

De elementen van de lijst worden uitgebreid met een sterretje, de uitgebreide elementen worden gegroepeerd met de zip() functie, en dan wordt de tupel omgezet in een lijst met list comprehension notatie.

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]]
Copied title and URL