ازگر کی فہرست کی قسم کی دو جہتی صفوں کی قطاروں اور کالموں کو تبدیل کریں۔

کاروبار

معیاری Python فہرست کی قسم فہرستوں کی فہرست کے ذریعہ دو جہتی صف کی نمائندگی کر سکتی ہے۔

یہ سیکشن بتاتا ہے کہ اس دو جہتی صف کی قطاروں اور کالموں کو کیسے تبدیل کیا جائے۔

    1. NumPy صف میں تبدیل کریں۔
    2. .Tاس کے ساتھ منتقل کریں۔
    1. pandas.DataFrameاس میں تبدیل کریں۔
    2. .Tاس کے ساتھ منتقل کریں۔
  • بلٹ ان فنکشن زپ () کے ساتھ ٹرانسپوزیشن

NumPy یا pandas کو استعمال کرنا آسان ہے، لیکن اگر آپ NumPy یا pandas کو صرف ٹرانسپوزیشن کے لیے امپورٹ نہیں کرنا چاہتے تو آپ zip() فنکشن کو ٹرانسپوز کرنے کے لیے استعمال کر سکتے ہیں۔

اصل دو جہتی صف کی وضاحت اس طرح کی گئی ہے۔

import numpy as np
import pandas as pd

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

NumPy سرنی ndarray میں تبدیل کیا گیا اور .T کے ساتھ منتقل کیا گیا۔

اصل دو جہتی سرنی سے NumPy سرنی ndarray بنائیں اور .T وصف کے ساتھ ٹرانسپوزڈ آبجیکٹ حاصل کریں۔

اگر آپ آخر میں ازگر کی فہرست کی قسم کا آبجیکٹ چاہتے ہیں تو اسے مزید ٹولسٹ() طریقہ کے ساتھ فہرست میں تبدیل کریں۔

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 حاصل کریں، اور پھر اسے 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() ایک ایسا فنکشن ہے جو ایک ایٹریٹر کو لوٹاتا ہے جو ایک سے زیادہ تکرار کرنے والے عناصر (فہرستوں، ٹوپلز، وغیرہ) کا خلاصہ کرتا ہے۔ یہ اس وقت استعمال ہوتا ہے جب ایک فار لوپ میں متعدد فہرستیں چلاتے ہوں، مثال کے طور پر۔

اس کے علاوہ، فنکشن ایک طریقہ کار کا استعمال کرتا ہے جس کے تحت فہرست کو بڑھایا اور پاس کیا جا سکتا ہے اگر فنکشن کی دلیل کو ستارے کے ساتھ نشان زد کیا گیا ہو۔

مندرجہ ذیل کے طور پر منتقلی کی جا سکتی ہے.

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

جیسا کہ یہ ہے، اندر عناصر tuples ہیں. لہذا، اگر آپ اسے ایک فہرست بنانا چاہتے ہیں، تو list() کا استعمال کریں، جو فہرست کی تفہیم کے اشارے میں ایک ٹوپل کو فہرست میں تبدیل کرتا ہے۔

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