Pythonin tavallinen listatyyppi voi esittää kaksiulotteista joukkoa listojen listana.
Tässä osassa kerrotaan, miten tämän kaksiulotteisen matriisin rivejä ja sarakkeita vaihdetaan.
- Muunna NumPy-massaksi
.T
Transponoi tämän kanssa.
pandas.DataFrame
Muunna tähän.T
Transponoi tämän kanssa.
- Transponointi sisäänrakennetulla funktiolla zip()
On helpompaa käyttää NumPy- tai pandas-ohjelmia, mutta jos et halua tuoda NumPy- tai pandas-ohjelmia vain transponointia varten, voit käyttää transponointiin zip()-funktiota.
Alkuperäinen kaksiulotteinen joukko määritellään seuraavasti
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
Muunnetaan NumPy-massaksi ndarray ja transponoidaan .T:llä.
Muodostaa NumPy-massan ndarray alkuperäisestä kaksiulotteisesta massasta ja saa transponoidun objektin .T-attribuutilla.
Jos haluat lopussa Python-luettelotyyppisen objektin, muunna se edelleen luetteloksi metodilla 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'>
.T-attribuutin lisäksi voidaan käyttää myös ndarray-metodia transpose() ja funktiota numpy.transpose().
Muunnettu pandas.DataFrame-muotoon ja transponoitu .T:llä.
Luodaan pandas.DataFrame alkuperäisestä kaksiulotteisesta matriisista ja saadaan transponoitu objekti .T-attribuutilla.
Jos haluat lopuksi Python-luettelotyyppisen objektin, hae numpy.ndarray-olio values-attribuutilla ja muunna se sitten luetteloksi tolist()-metodilla.
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'>
Transponointi sisäänrakennetulla funktiolla zip()
Transponoi kaksiulotteisen matriisin käyttämällä sisäänrakennettua funktiota zip().
zip() on funktio, joka palauttaa iteraattorin, joka tiivistää useiden iteraattorien (listojen, tuplien jne.) elementit. Sitä käytetään esimerkiksi silloin, kun useita listoja ajetaan for-silmukassa.
Lisäksi funktio käyttää mekanismia, jonka avulla luettelo voidaan laajentaa ja siirtää, jos funktion argumentti on merkitty tähdellä.
Siirrot voidaan tehdä seuraavasti.
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'>
Sellaisenaan elementit ovat tupleja. Jos siis haluat tehdä siitä listan, käytä list()-ohjelmaa, joka muuntaa tuplen listaksi listan ymmärtämisen merkintätavalla.
- RELATED:Kuinka käyttää Python-luettelon ymmärrettävyyttä
- RELATED:Listojen ja tuplien muuntaminen toisiinsa Pythonissa: 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'>
Seuraavassa on prosessin vaiheittainen erittely.
Luettelon elementit laajennetaan tähdellä, laajennetut elementit ryhmitellään yhteen zip()-funktiolla, minkä jälkeen tuple muunnetaan listaksi listan ymmärtämisen merkintätavalla.
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]]