Zamijenite retke i stupce dvodimenzionalnog niza tipa popisa Python

Poslovanje

Standardni tip popisa Python može predstavljati dvodimenzionalni niz popisom popisa.

Ovaj odjeljak objašnjava kako zamijeniti retke i stupce ovog dvodimenzionalnog niza.

    1. Pretvori u NumPy niz
    2. .TTransponirajte s ovim.
    1. pandas.DataFramePretvorite se u ovo
    2. .TTransponirajte s ovim.
  • Transpozicija s ugrađenom funkcijom zip()

Lakše je koristiti NumPy ili pande, ali ako ne želite uvesti NumPy ili pande samo za transpoziciju, možete koristiti zip() funkciju za transponiranje.

Izvorni dvodimenzionalni niz definiran je kako slijedi

import numpy as np
import pandas as pd

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

Pretvoreno u NumPy niz ndarray i transponirano s .T

Generirajte NumPy niz ndarray iz izvornog dvodimenzionalnog niza i dohvatite transponirani objekt s .T atributom.

Ako na kraju želite Python objekt tipa popisa, dalje ga pretvorite u popis metodom 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'>

Osim atributa .T, također se mogu koristiti metoda ndarray transpose() i funkcija numpy.transpose().

Pretvoreno u pandas.DataFrame i transponirano s .T

Generirajte pandas.DataFrame iz izvornog dvodimenzionalnog niza i dohvatite transponirani objekt s atributom .T.

Ako na kraju želite Python objekt tipa popisa, nabavite numpy.ndarray s atributom values, a zatim ga pretvorite u popis metodom tolist().

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

Transpozicija s ugrađenom funkcijom zip()

Transponira dvodimenzionalni niz pomoću ugrađene funkcije zip().

zip() je funkcija koja vraća iterator koji sažima elemente višestrukih iterable (liste, torke, itd.). Koristi se kod pokretanja više popisa u for petlji, na primjer.

Osim toga, funkcija koristi mehanizam pomoću kojeg se popis može proširiti i proslijediti ako je argument funkcije označen zvjezdicom.

Transpozicije se mogu izvršiti na sljedeći način.

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

Kako jest, elementi unutar su tuple. Stoga, ako ga želite učiniti popisom, koristite list(), koji pretvara tuple u popis u zapisu za razumijevanje popisa.

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

Slijedi raščlamba procesa korak po korak.

Elementi popisa se proširuju zvjezdicom, prošireni elementi se grupiraju zajedno s funkcijom zip(), a zatim se tuple pretvara u popis s notacijom razumijevanja popisa.

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