Standardni Pythonov tip seznama lahko dvodimenzionalno polje predstavlja s seznamom seznamov.
V tem razdelku je razloženo, kako zamenjati vrstice in stolpce tega dvodimenzionalnega polja.
- Pretvori v polje NumPy
.T
Transponirajte s tem.
pandas.DataFrame
Pretvori v to.T
Transponirajte s tem.
- Transpozicija z vgrajeno funkcijo zip()
Lažje je uporabiti NumPy ali pandas, vendar če ne želite uvoziti NumPy ali pandas samo za preslikavo, lahko za preslikavo uporabite funkcijo zip().
Izvirno dvodimenzionalno polje je opredeljeno na naslednji način
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
pretvorjeno v NumPy polje ndarray in transponirano z .T
Iz prvotnega dvodimenzionalnega polja ustvari NumPyjevo polje ndarray in pridobi transponiran objekt z atributom .T.
Če želite na koncu dobiti objekt tipa Pythonov seznam, ga dodatno pretvorite v seznam z metodo 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'>
Poleg atributa .T lahko uporabite tudi metodo ndarray transpose() in funkcijo numpy.transpose().
Pretvorjeno v pandas.DataFrame in transponirano z .T
Iz prvotnega dvodimenzionalnega polja ustvarite pandas.DataFrame in pridobite transponiran objekt z atributom .T.
Če želite na koncu dobiti objekt tipa Pythonov seznam, pridobite numpy.ndarray z atributom values in ga nato pretvorite v seznam z metodo 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 z vgrajeno funkcijo zip()
Transponira dvodimenzionalno polje z uporabo vgrajene funkcije zip().
zip() je funkcija, ki vrne iterator, ki povzema elemente več iterabilov (seznamov, tuplov itd.). Uporablja se na primer pri izvajanju več seznamov v zanki for.
Poleg tega funkcija uporablja mehanizem, s katerim se lahko seznam razširi in posreduje, če je argument funkcije označen z zvezdico.
- POVEZANO:Razširjanje in posredovanje seznamov, nizov in slovarjev kot argumentov funkcij v programu Python
Transpozicijo lahko izvedete na naslednji 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'>
Že tako so elementi v njem tuple. Če ga želite spremeniti v seznam, uporabite funkcijo list(), ki pretvori tuple v seznam v zapisu za razumevanje seznamov.
- POVEZANO:Kako uporabljati razumevanje seznamov v Pythonu
- POVEZANO:Pretvarjanje seznamov in tuplov drug v drugega v Pythonu: 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'>
V nadaljevanju je opisan postopek po korakih.
Elementi seznama so razširjeni z zvezdico, razširjeni elementi so združeni s funkcijo zip(), nato pa je tuple pretvorjen v seznam z zapisom za razumevanje seznama.
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]]