ပုံမှန် Python စာရင်းအမျိုးအစားသည် စာရင်းများစာရင်းဖြင့် နှစ်ဖက်မြင် အခင်းအကျင်းတစ်ခုကို ကိုယ်စားပြုနိုင်သည်။
ဤနှစ်ဘက်မြင် ခင်းကျင်းမှု၏ အတန်းများနှင့် ကော်လံများကို မည်ကဲ့သို့ လဲလှယ်ရမည်ကို ဤကဏ္ဍတွင် ရှင်းပြထားသည်။
- NumPy အခင်းအကျင်းသို့ ပြောင်းပါ။
.T
ဤအရာဖြင့် ကူးပြောင်းပါ။
pandas.DataFrame
ဤသို့ပြောင်းပါ။.T
ဤအရာဖြင့် ကူးပြောင်းပါ။
- Built-in function zip() ဖြင့် အသွင်ပြောင်းခြင်း
NumPy သို့မဟုတ် pandas ကိုအသုံးပြုရန်ပိုမိုလွယ်ကူသည်၊ သို့သော် NumPy သို့မဟုတ် pandas များကိုကူးပြောင်းရန်အတွက်သာမတင်သွင်းလိုပါက၊ transpose လုပ်ရန် zip() လုပ်ဆောင်ချက်ကိုသုံးနိုင်သည်။
မူရင်း နှစ်ဘက်မြင် array ကို အောက်ပါအတိုင်း သတ်မှတ်သည်။
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
NumPy array ကို ndarray အဖြစ်ပြောင်းပြီး .T ဖြင့် ပြန်ဆိုသည်။
မူလနှစ်ဖက်မြင် array မှ NumPy အခင်းအကျင်းတစ်ခုကို ဖန်တီးပြီး .T ရည်ညွှန်းချက်ဖြင့် အသွင်ပြောင်းထားသော အရာဝတ္တုကို ရယူပါ။
အဆုံးတွင် Python list-type object တစ်ခုကို လိုချင်ပါက၊ tolist() method ဖြင့် စာရင်းတစ်ခုသို့ ထပ်မံပြောင်းပါ။
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 attribute အပြင် ndarray method transpose() နှင့် function numpy.transpose() တို့ကိုလည်း အသုံးပြုနိုင်ပါသည်။
pandas.DataFrame အဖြစ်ပြောင်းပြီး .T ဖြင့် transposed
မူလနှစ်ဖက်မြင် အခင်းအကျင်းမှ pandas.DataFrame ကို ဖန်တီးပြီး .T ရည်ညွှန်းချက်ဖြင့် ပြောင်းလဲထားသော အရာဝတ္တုကို ရယူပါ။
အဆုံးတွင် Python list-type object တစ်ခုကို လိုချင်ပါက values attribute ဖြင့် numpy.ndarray ကိုရယူပြီး tolist() method ဖြင့် စာရင်းတစ်ခုသို့ ပြောင်းပါ။
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'>
Built-in function zip() ဖြင့် အသွင်ပြောင်းခြင်း
Built-in လုပ်ဆောင်ချက် zip() ကို အသုံးပြု၍ နှစ်ဖက်မြင် အခင်းအကျင်းတစ်ခုကို အသွင်ပြောင်းသည်။
zip() သည် iterable အများအပြား၏ဒြပ်စင်များ (စာရင်းများ၊ tuples စသည်) ကို အကျဉ်းချုပ်ဖော်ပြသည့် တိုင်တာတစ်ခုအား ပြန်ပေးသည့် လုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဥပမာအားဖြင့် for loop တစ်ခုတွင် စာရင်းများစွာကို လုပ်ဆောင်သည့်အခါ ၎င်းကို အသုံးပြုသည်။
ထို့အပြင်၊ function argument ကို ခရေပွင့်ဖြင့် အမှတ်အသားပြုပါက စာရင်းကို တိုးချဲ့နိုင်ပြီး ကျော်သွားနိုင်သည့် ယန္တရားကို အသုံးပြုပါသည်။
အသွင်ကူးပြောင်းမှုများကို အောက်ပါအတိုင်း ပြုလုပ်နိုင်ပါသည်။
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'>
အထဲမှာ ပါတဲ့ ဒြပ်စင်တွေက tuple တွေပါ။ ထို့ကြောင့်၊ ၎င်းကို စာရင်းတစ်ခုပြုလုပ်လိုပါက၊ စာရင်းနားလည်မှုမှတ်စုတွင် tuple တစ်ခုသို့ tuple အဖြစ်ပြောင်းပေးသော list() ကိုအသုံးပြုပါ။
- ဆက်စပ်-Python list comprehensions ကိုအသုံးပြုနည်း
- ဆက်စပ်-စာရင်းများနှင့် tuple များကို Python တွင် တစ်ခုနှင့်တစ်ခုသို့ ပြောင်းနေသည်- 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'>
အောက်ပါတို့သည် လုပ်ငန်းစဉ်၏ အဆင့်ဆင့်ခွဲခြမ်းစိတ်ဖြာမှုဖြစ်သည်။
စာရင်း၏ဒြပ်စင်များကို ခရေပွင့်ဖြင့် ချဲ့ထားသည်၊ တိုးချဲ့ထားသောဒြပ်စင်များကို zip() လုပ်ဆောင်ချက်ဖြင့် အုပ်စုဖွဲ့ကာ၊ ထို့နောက် tuple ကို list comprehension notation ဖြင့် စာရင်းတစ်ခုသို့ ပြောင်းသည်။
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]]