قم بتبديل صفوف وأعمدة مصفوفة ثنائية الأبعاد من نوع قائمة Python

اعمال

يمكن أن يمثل نوع قائمة Python القياسي مصفوفة ثنائية الأبعاد بواسطة قائمة من القوائم.

يشرح هذا القسم كيفية تبديل الصفوف والأعمدة في هذه المصفوفة ثنائية الأبعاد.

    1. تحويل إلى مجموعة NumPy
    2. .Tتبديل مع هذا.
    1. pandas.DataFrameحول إلى هذا
    2. .Tتبديل مع هذا.
  • التحويل مع الوظيفة المدمجة zip ()

من الأسهل استخدام 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.

إذا كنت تريد كائنًا من نوع قائمة Python في النهاية ، فقم بتحويله إلى قائمة باستخدام طريقة 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 للتبديل () والدالة numpy.transpose ().

تم تحويله إلى pandas.DataFrame وتم نقله بامتداد

قم بإنشاء pandas.DataFrame من المصفوفة ثنائية الأبعاد الأصلية واحصل على الكائن المنقول بسمة T.

إذا كنت تريد كائنًا من نوع قائمة Python في النهاية ، فاحصل على 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 ().

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 comprehension.

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