Standart Python siyahı növü siyahılar siyahısı ilə iki ölçülü massivi təmsil edə bilər.
Bu bölmə bu iki ölçülü massivin sətir və sütunlarının necə dəyişdirilməsini izah edir.
- NumPy massivinə çevirin
.T
Bununla transpoze edin.
pandas.DataFrame
Buna çevirin.T
Bununla transpoze edin.
- Daxili zip() funksiyası ilə transpozisiya
NumPy və ya pandaları istifadə etmək daha asandır, lakin NumPy və ya pandaları yalnız köçürmə üçün idxal etmək istəmirsinizsə, köçürmək üçün zip() funksiyasından istifadə edə bilərsiniz.
Orijinal iki ölçülü massiv aşağıdakı kimi müəyyən edilir
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
NumPy massivinə çevrildi və .T ilə köçürüldü
Orijinal ikiölçülü massivdən NumPy massivi ndarray yaradın və .T atributu ilə köçürülmüş obyekti əldə edin.
Sonda Python siyahı tipli obyekt istəyirsinizsə, onu daha sonra tolist() metodu ilə siyahıya çevirin.
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 atributuna əlavə olaraq ndarray metodu transpose() və numpy.transpose() funksiyasından da istifadə etmək olar.
Pandas.DataFrame-ə çevrildi və .T ilə köçürüldü
Orijinal ikiölçülü massivdən pandas.DataFrame yaradın və .T atributu ilə köçürülmüş obyekti əldə edin.
Sonda Python siyahı tipli obyekt istəyirsinizsə, dəyərlər atributu ilə numpy.ndarray əldə edin və sonra onu tolist() metodu ilə siyahıya çevirin.
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'>
Daxili zip() funksiyası ilə transpozisiya
Daxili zip() funksiyasından istifadə edərək ikiölçülü massivi köçürür.
zip() birdən çox təkrarlana bilən elementləri (siyahılar, dəstlər və s.) ümumiləşdirən iteratoru qaytaran funksiyadır. Məsələn, for loopunda birdən çox siyahı işlədərkən istifadə olunur.
Bundan əlavə, funksiya, funksiya arqumenti ulduz işarəsi ilə işarələnərsə, siyahı genişləndirilə və ötürülə bilən mexanizmdən istifadə edir.
Transpozisiya aşağıdakı kimi edilə bilər.
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'>
Olduğu kimi, içəridəki elementlər tupledir. Buna görə də, əgər siz onu siyahı etmək istəyirsinizsə, siyahının başa düşülməsi notasiyasında dəftəri siyahıya çevirən list() funksiyasından istifadə edin.
- ƏLAQƏLİ:Python siyahısı anlamalarından necə istifadə etmək olar
- ƏLAQƏLİ:Python-da siyahıların və çubuqların bir-birinə çevrilməsi: 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'>
Aşağıda prosesin addım-addım təsviri verilmişdir.
Siyahının elementləri ulduz işarəsi ilə genişləndirilir, genişləndirilmiş elementlər zip() funksiyası ilə birlikdə qruplaşdırılır və sonra dəfn siyahının başa düşülməsi qeydi ilə siyahıya çevrilir.
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]]