English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دروس بايثون الأساسية

تحكم بايثون

الوظائف في Python

أنواع البيانات في Python

عمليات ملفات بايثون

أجسام وصفات بايثون

تاريخ ووقت بايثون

معرفة بايثون المتقدمة

دليل بايثون

برنامج بايثون يتعامل مع تعويض مصفوفتين

مثال كامل بايثون

في هذا المثال، سنتعلم كيفية تعويض مصفوفتين باستخدام طريقتين مختلفتين: الدورات المزدوجة والفهم العميق

لفهم هذا المثال، يجب أن تكون على علم بما يليبرمجة بايثونالموضوع:

في بايثون، يمكننا تحقيق المصفوفة كقائمة من القوائم (قائمة داخل قائمة).

يمكننا اعتبار كل عنصر كخط في المصفوفة.

على سبيل المثال، X = [[1, 2], [4, 5], [3, 6]] يمثل مصفوفة حجمها 3x2.

يمكن اختيار السطر الأول كـ X[0]. ويمكن اختيار العنصر الأول في السطر الأول والعمود الأول كـ X[0][0].

تعريف ضرب المصفوفتين X و Y يتم فقط عندما يكون عدد الأعمدة في X يساوي عدد الصفوف في Y.

إذا كان X مصفوفة حجمها n x m، و Y مصفوفة حجمها m x l، فإن XY معرف، حجمها n x l (لكن YX غير معرف). إليك بعض الطرق لتحقيق تعويض المصفوفات في بايثون.

الكود المصدر: تعويض مصفوفة باستخدام الدورات المزدوجة

# برنامج يستخدم الدورات المزدوجة لتوليد تعويض مصفوفتين
# مصفوفة 3x3
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# مصفوفة 3x4
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# النتيجة 3x4
result = [[0,0,0,0],
         [0,0,0,0],
         [0,0,0,0]]
# مرور عبر صفوف X
لـ i في نطاق طول X:
   # مرور عبر أعمدة Y
   لـ j في نطاق طول Y[0]:
       # مرور عبر صفوف Y
       لـ k في نطاق طول Y:
           result[i][j] += X[i][k] * Y[k][j]
لـ r في result:
   print(r)

نتيجة الخروج

[114, 160, 60, 27]
[74, 97, 73, 14]
[119, 157, 112, 23]

في هذا البرنامج، نستخدم حلقة for المدمجة لتتبع كل سطر وعمود. نضيف مجموع المنتجات في النتيجة.

هذه التقنية بسيطة، ولكن مع زيادة رتبة المصفوفة، يزداد حجم الحسابات.

للمعاملات المصفوفة الكبيرة، نوصي باستخدام حزمة معززة مثلNumPy، وهو أسرع بمرات عديدة مما ذكرنا أعلاه (حوالي 1000 مرة).

كود المصدر: استخدام فهم القوائم المدمجة لضرب المصفوفات

# برنامج ضرب مصفوفتين باستخدام فهم القوائم المدمجة
# مصفوفة 3x3
X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]
# مصفوفة 3x4
Y = [[5,8,1,2],
    [6,7,3,0],
    [4,5,9,1]]
# النتيجة 3x4
result = [[sum(a*b for a, b in zip(X_row, Y_col)) for Y_col in zip(*Y)] for X_row in X]
لـ r في result:
   print(r)

خروج البرنامج هو نفسه في الأعلى. لفهم الكود في الأعلى، يجب علينا أولاً أن نفهم وظيفة الدالة المدمجة zip() واستخدام عمليات الحساب * لفك تشفير قائمة الأنواع.

خروج البرنامج هو نفسه في الأعلى. لفهم الكود في الأعلى، يجب علينا أولاً أن نفهم وظيفة الدالة المدمجة zip() واستخدام عمليات الحساب * لفك تشفير قائمة الأنواع.

مثال كامل بايثون