نوع استاندارد لیست پایتون می تواند یک آرایه دو بعدی را با لیستی از لیست ها نشان دهد.
این بخش نحوه تعویض سطرها و ستون های این آرایه دو بعدی را توضیح می دهد.
- تبدیل به آرایه NumPy
.T
با این جابجایی کنید.
pandas.DataFrame
به این تبدیل کنید.T
با این جابجایی کنید.
- جابجایی با تابع داخلی zip()
استفاده از NumPy یا panda ها آسان تر است، اما اگر نمی خواهید NumPy یا پانداها را فقط برای جابجایی وارد کنید، می توانید از تابع zip() برای انتقال استفاده کنید.
آرایه دو بعدی اصلی به صورت زیر تعریف می شود
import numpy as np
import pandas as pd
l_2d = [[0, 1, 2], [3, 4, 5]]
به آرایه NumPy ndarray تبدیل شد و با .T جابهجا شد
یک آرایه NumPy از آرایه دو بعدی اصلی ایجاد کنید و شیء جابجا شده را با ویژگی .T دریافت کنید.
اگر در پایان یک شی از نوع لیست پایتون می خواهید، آن را با متد ()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، می توان از متد ndarray transpose() و تابع numpy.transpose() نیز استفاده کرد.
به pandas.DataFrame تبدیل شد و با .T جابهجا شد
یک pandas.DataFrame از آرایه دو بعدی اصلی ایجاد کنید و شی جابهجایی را با ویژگی .T دریافت کنید.
اگر در پایان یک شی از نوع لیست پایتون می خواهید، numpy.ndarray را با ویژگی values دریافت کنید و سپس آن را با متد 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'>
جابجایی با تابع داخلی zip()
یک آرایه دو بعدی را با استفاده از تابع داخلی zip() انتقال می دهد.
zip() تابعی است که یک تکرار کننده را برمی گرداند که عناصر چندین تکرار شونده (لیست ها، تاپل ها و غیره) را خلاصه می کند. به عنوان مثال، هنگام اجرای چندین لیست در یک حلقه for استفاده می شود.
علاوه بر این، تابع از مکانیزمی استفاده میکند که به موجب آن، اگر آرگومان تابع با ستاره مشخص شده باشد، فهرست را میتوان گسترش داد و پاس داد.
جابجایی را می توان به صورت زیر انجام داد.
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'>
همانطور که هست، عناصر داخل چندتایی هستند. بنابراین، اگر می خواهید آن را به یک لیست تبدیل کنید، از list() استفاده کنید که یک تاپل را به یک لیست در نماد درک لیست تبدیل می کند.
- مربوط:نحوه استفاده از درک لیست پایتون
- مربوط:تبدیل لیست ها و تاپل ها به یکدیگر در پایتون: 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() گروه بندی می شوند و سپس تاپل به لیستی با نماد درک لیست تبدیل می شود.
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]]