Udskiftning af rækker og kolonner i et todimensionalt array af Python-listetypen

Forretning

Pythons standard list-type kan repræsentere et todimensionalt array ved hjælp af en liste af lister.

I dette afsnit forklares det, hvordan man bytter rækker og kolonner i dette todimensionale array.

    1. Konverter til NumPy-array
    2. .TTransponere med dette.
    1. pandas.DataFrameKonverter til dette
    2. .TTransponere med dette.
  • Omsætning med den indbyggede funktion zip()

Det er nemmere at bruge NumPy eller pandas, men hvis du ikke ønsker at importere NumPy eller pandas bare for at transponere, kan du bruge zip()-funktionen til at transponere.

Det oprindelige todimensionale array er defineret som følger

import numpy as np
import pandas as pd

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

Konverteret til NumPy array ndarray og transponeret med .T

Generer et NumPy-array ndarray fra det oprindelige todimensionelle array og får det transponerede objekt med .T-attributten.

Hvis du vil have et Python-objekt af listetypen til sidst, skal du konvertere det yderligere til en liste med tolist()-metoden.

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

Ud over .T-attributten kan ndarray-metoden transpose() og funktionen numpy.transpose() også anvendes.

Konverteret til pandas.DataFrame og transponeret med .T

Generer et pandas.DataFrame fra det oprindelige todimensionale array og får det transponerede objekt med .T-attributten.

Hvis du vil have et Python-objekt af listetypen til sidst, skal du hente numpy.ndarray med values-attributten og derefter konvertere det til en liste med tolist()-metoden.

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

Omsætning med den indbyggede funktion zip()

Transponerer et todimensionalt array ved hjælp af den indbyggede funktion zip().

zip() er en funktion, der returnerer en iterator, som opsummerer elementerne i flere iterables (lister, tupler osv.). Den bruges f.eks. når man kører flere lister i en for-loop.

Desuden anvender funktionen en mekanisme, hvorved listen kan udvides og overføres, hvis funktionsargumentet er markeret med en asterisk.

Transpositioner kan foretages på følgende måde.

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

Som det er nu, er elementerne indeni tupler. Hvis du vil gøre det til en liste, skal du derfor bruge list(), som konverterer en tupel til en liste i list comprehension notation.

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

I det følgende beskrives processen trin for trin.

Elementerne i listen udvides med en asterisk, de udvidede elementer grupperes sammen med zip()-funktionen, og derefter konverteres tuplen til en liste med list comprehension notation.

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