Badilisha safu na safu wima za safu ya pande mbili ya aina ya orodha ya Python

Biashara

Aina ya kawaida ya orodha ya Python inaweza kuwakilisha safu ya pande mbili kwa orodha ya orodha.

Sehemu hii inaelezea jinsi ya kubadilisha safu na safu wima za safu hii ya pande mbili.

    1. Badilisha kuwa safu ya NumPy
    2. .TTranspose na hii.
    1. pandas.DataFrameBadilisha kwa hii
    2. .TTranspose na hii.
  • Ubadilishaji na utendakazi uliojengewa ndani zip()

Ni rahisi kutumia NumPy au panda, lakini ikiwa hutaki kuleta NumPy au panda kwa uhamishaji tu, unaweza kutumia zip() chaguo la kukokotoa kugeuza.

Safu ya asili ya pande mbili inafafanuliwa kama ifuatavyo

import numpy as np
import pandas as pd

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

Imegeuzwa kuwa safu ya NumPy ndarray na kubadilishwa kwa .T

Tengeneza safu ya NumPy kutoka safu asili ya pande mbili na upate kitu kilichopitishwa kwa sifa ya .T.

Ikiwa unataka kitu cha aina ya orodha ya Python mwishowe, ibadilishe zaidi kuwa orodha na tolist() njia.

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

Kando na sifa ya .T, mbinu ya ndarray transpose() na chaguo za kukokotoa numpy.transpose() pia inaweza kutumika.

Imegeuzwa kuwa pandas.DataFrame na kubadilishwa kwa .T

Tengeneza pandas.DataFrame kutoka kwa safu asili ya pande mbili na upate kitu kilichobadilishwa chenye sifa ya .T.

Ikiwa unataka kitu cha aina ya orodha ya Python mwishoni, pata numpy.ndarray na sifa ya maadili, na kisha uibadilishe kuwa orodha na tolist() mbinu.

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

Ubadilishaji na utendakazi uliojengewa ndani zip()

Hubadilisha safu ya pande mbili kwa kutumia kitendakazi kilichojengewa ndani zip().

zip() ni chaguo la kukokotoa ambalo hurejesha kiigizo ambacho kinatoa muhtasari wa vipengee vya maandishi mengi yanayoweza kuelezeka (orodha, nakala, n.k.). Inatumika wakati wa kuendesha orodha nyingi kwa kitanzi, kwa mfano.

Kwa kuongeza, chaguo za kukokotoa hutumia utaratibu ambapo orodha inaweza kupanuliwa na kupitishwa ikiwa hoja ya utendaji kazi imewekwa alama ya nyota.

Transpositions inaweza kufanywa kama ifuatavyo.

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

Kama ilivyo, vitu vya ndani ni tuples. Kwa hivyo, ikiwa unataka kuifanya orodha, tumia list(), ambayo hubadilisha nakala hadi orodha katika nukuu ya ufahamu wa orodha.

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

Ifuatayo ni uchanganuzi wa hatua kwa hatua wa mchakato.

Vipengee vya orodha vinapanuliwa kwa kinyota, vipengele vilivyopanuliwa vinawekwa pamoja na zip() kitendakazi, na kisha tuple inabadilishwa kuwa orodha yenye nukuu ya ufahamu wa orodha.

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