Python المصفوفات: النقل، الضرب، مصفوفات NumPy

⚡ ملخص ذكي

A Python المصفوفة عبارة عن مجموعة بيانات ثنائية الأبعاد مرتبة في صفوف وأعمدة، وتُستخدم في الرياضيات والعلوم. ستتعلم هنا كيفية إنشاء المصفوفات باستخدام القوائم المتداخلة ومكتبة NumPy، وإجراء عمليات الجمع والضرب والنقل والتقطيع.

  • 🔢 ما هو : المصفوفة هي عبارة عن مجموعة ثنائية الأبعاد من البيانات في صفوف وأعمدة.
  • 📋 القوائم المتداخلة: Python يمكن بناء المصفوفات كقائمة من القوائم.
  • 🧮 مصفوفات NumPy: تقوم الدالة numpy.array() بإنشاء مصفوفات أسرع وأكثر ثراءً بالميزات.
  • Operaنشوئها: أضف، استبدلtract، وضرب المصفوفات باستخدام عوامل التشغيل أو numpy.dot().
  • 🔄 نقل وتقطيع: تقوم الدالة transpose() بتبديل الصفوف والأعمدة؛ بينما تقوم الدالة slicing بتحديد المصفوفات الفرعية.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم أدوات الذكاء الاصطناعي مثل Copilot بإنشاء أكواد المصفوفات و NumPy على الفور.

Python مصفوفة

ما هي تفاصيل Python مصفوفة؟

A Python المصفوفة عبارة عن مجموعة مستطيلة ثنائية الأبعاد متخصصة من البيانات المخزنة في صفوف وأعمدة. يمكن أن تكون البيانات الموجودة في المصفوفة أرقامًا أو سلاسل أو تعبيرات أو رموزًا وما إلى ذلك. المصفوفة هي إحدى هياكل البيانات المهمة التي يمكن استخدامها في الحسابات الرياضية والعلمية.

كيف Python عمل المصفوفات؟

تبدو البيانات الموجودة داخل المصفوفة ثنائية الأبعاد بتنسيق المصفوفة كما يلي:

Python مصفوفة

الخطوة 1) إنها تظهر مصفوفة 2×2. تحتوي على صفين وعمودين. البيانات الموجودة داخل المصفوفة عبارة عن أرقام. يحتوي الصف 2 على القيم 1 و2,3، ويحتوي الصف 2 على القيم 4,5 و1. تحتوي الأعمدة، أي العمود 2,4، على القيم 2 و3,5، ويحتوي العمود XNUMX على القيم XNUMX وXNUMX.

الخطوة 2) يظهر مصفوفة 2 × 3. يتكون من صفين وثلاثة أعمدة. البيانات الموجودة داخل الصف الأول، أي الصف 1، لها قيم 2,3,4، والصف 2 لها قيم 5,6,7. تحتوي الأعمدة col1 على قيم 2,5، وcol2 لها قيم 3,6، وcol3 لها قيم 4,7.

وبالمثل، يمكنك تخزين بياناتك داخل مصفوفة nxn Pythonيمكن إجراء العديد من العمليات على عملية جمع وطرح تشبه المصفوفةtracالضرب، الضرب، إلخ.

Python ليس لديه طريقة مباشرة لتنفيذ نوع بيانات المصفوفة.

تستخدم مصفوفة بايثون المصفوفات، ويمكن تنفيذ الشيء نفسه.

  • إنشاء Python مصفوفة تستخدم نوع بيانات القائمة المتداخلة
  • إنشاء Python مصفوفة باستخدام المصفوفات من Python حزمة نومي

إنشاء Python مصفوفة تستخدم نوع بيانات القائمة المتداخلة

In Pythonيتم تمثيل المصفوفات باستخدام نوع البيانات القائمة. لذا سنستخدم القائمة الآن لإنشاء مصفوفة بايثون.

سنقوم بإنشاء مصفوفة 3×3 كما هو موضح أدناه:

إنشاء Python مصفوفة باستخدام قائمة متداخلة

  • تحتوي المصفوفة على 3 صفوف وعمودين.
  • سيكون الصف الأول بتنسيق القائمة كما يلي: [8,14,-6]
  • الصف الثاني في القائمة سيكون: [12,7,4،XNUMX،XNUMX]
  • الصف الثالث في القائمة سيكون: [-11,3,21]

المصفوفة الموجودة داخل القائمة التي تحتوي على كافة الصفوف والأعمدة هي كما هو موضح أدناه:

List = [[Row1], 
           [Row2], 
           [Row3]
           ...
           [RowN]]

لذا، وفقًا للمصفوفة المذكورة أعلاه، يكون نوع القائمة مع بيانات المصفوفة كما يلي:

M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]

لقراءة البيانات في الداخل Python مصفوفة باستخدام القائمة.

سوف نستخدم المصفوفة المحددة أعلاه. سيقوم المثال بقراءة البيانات وطباعة المصفوفة وعرض العنصر الأخير من كل صف.

مثال: لطباعة المصفوفة

M1 = [[8, 14, -6], 
           [12,7,4], 
           [-11,3,21]]

#To print the matrix
print(M1)

الإخراج:

The Matrix M1 =  [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]

مثال 2: قراءة العنصر الأخير من كل صف

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To read the last element from each row.
for i in range(matrix_length):
    print(M1[i][-1])

الإخراج:

-6
4
21

مثال 3: لطباعة الصفوف في المصفوفة

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To print the rows in the Matrix
for i in range(matrix_length):
    print(M1[i])

الإخراج:

[8, 14, -6]
[12, 7, 4]
[-11, 3, 21]

إضافة المصفوفات باستخدام القائمة المتداخلة

يمكننا بسهولة إضافة مصفوفتين معلومتين. المصفوفات هنا ستكون على شكل قائمة. دعونا نعمل على مثال سيهتم بإضافة المصفوفات المعطاة.

مصفوفة 1:

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

مصفوفة 2 :

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

سيقوم الأخير بتهيئة المصفوفة التي ستقوم بتخزين نتيجة M1 + M2.

مصفوفة 3 :

M3  = [[0,0,0],
            [0,0,0],
            [0,0,0]]

مثال: إضافة المصفوفات

للإضافة، ستستفيد المصفوفات من حلقة for التي ستدور خلال المصفوفتين المعطاتين.

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]
matrix_length = len(M1)

#To Add M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] + M2[i][k]

#To Print the matrix
print("The sum of Matrix M1 and M2 = ", M3)

الإخراج:

The sum of Matrix M1 and M2 =  [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]

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

لضرب المصفوفات، يمكننا استخدام حلقة for على كلا المصفوفتين كما هو موضح في الكود أدناه:

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]

matrix_length = len(M1)

#To Multiply M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] * M2[i][k]

#To Print the matrix
print("The multiplication of Matrix M1 and M2 = ", M3)

الإخراج:

The multiplication of Matrix M1 and M2 =  [[24, 224, 36], [108, 49, -16], [11, 9, 273]]

إنشاء Python مصفوفة باستخدام المصفوفات من Python حزمة نومي

مكتبة بايثون Numpy تساعد في التعامل مع المصفوفات. يقوم Numpy بمعالجة المصفوفة بشكل أسرع قليلاً مقارنة بالقائمة.

للعمل مع Numpy، عليك تثبيته أولاً. اتبع الخطوات الموضحة أدناه لتثبيت Numpy.

الخطوة 1) أمر تثبيت Numpy هو:

pip install NumPy

الخطوة 2) للاستفادة من Numpy في التعليمات البرمجية الخاصة بك، يجب عليك استيراده.

import NumPy

الخطوة 3) يمكنك أيضًا استيراد Numpy باستخدام اسم مستعار، كما هو موضح أدناه:

import NumPy as np

سنستخدم طريقة array() من Numpy لإنشاء مصفوفة بايثون.

مثال: إنشاء مصفوفة في Numpy Python مصفوفة

import numpy as np
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)

الإخراج:

[[  5 -10  15]
 [  3  -6   9]
 [ -4   8  12]]

مصفوفة Operaنشوئها باستخدام Numpy.Array()

العمليات التي يمكن إجراؤها على المصفوفات هي الجمع والطرح.tracعمليات مثل الضرب، ونقل المصفوفة، وقراءة صفوف وأعمدة المصفوفة، وتقطيع المصفوفة، وما إلى ذلك. في جميع الأمثلة، سنستخدم طريقة array().

إضافة المصفوفة

لإجراء عملية جمع على المصفوفة، سنقوم بإنشاء مصفوفتين باستخدام numpy.array() وإضافتهما باستخدام عامل (+).

على سبيل المثال:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 + M2  
print(M3)

الإخراج:

[[ 12 -12  36]
 [ 16  12  48]
 [  6 -12  60]]

مصفوفة فرعيةtracالإنتاج

لإجراء عملية فرعيةtracعند تطبيق الدالة على المصفوفة، سنقوم بإنشاء مصفوفتين باستخدام numpy.array() و subtracاستخدم عامل الطرح (-) لطرحها.

على سبيل المثال:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 - M2  
print(M3)

الإخراج:

[[ -6  24 -18]
 [ -6 -32 -18]
 [-20  40 -18]]

ضرب المصفوفة

أولاً سيتم إنشاء مصفوفتين باستخدام numpy.arary(). لضربهم، يمكنك الاستفادة من طريقة numpy dot(). Numpy.dot() هو المنتج النقطي للمصفوفة M1 وM2. يعالج Numpy.dot() المصفوفات ثنائية الأبعاد ويقوم بعمليات ضرب المصفوفات.

على سبيل المثال:

import numpy as np

M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
M3 = M1.dot(M2)  
print(M3)

الإخراج:

[[  93   78]
 [ -65 -310]]

تبديل المصفوفة

يتم حساب تبديل المصفوفة عن طريق تغيير الصفوف إلى أعمدة والأعمدة إلى صفوف. يمكن استخدام وظيفة النقل () من Numpy لحساب تبديل موضع المصفوفة.

على سبيل المثال:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
M2 = M1.transpose()

print(M2)

الإخراج:

[[  3   5   4]
 [  6 -10   8]
 [  9  15  12]]

تقطيع المصفوفة

سيعيد لك التقطيع العناصر من المصفوفة بناءً على فهرس البداية/النهاية المحدد.

  • بناء جملة التقطيع هو – [البدء: النهاية]
  • إذا لم يتم إعطاء فهرس البداية، فسيتم اعتباره 0. على سبيل المثال [:5]، يعني [0:5].
  • إذا لم يتم تمرير النهاية، فسوف يستغرق الأمر طول المصفوفة.
  • إذا كانت البداية/النهاية لها قيم سالبة، فسيتم إجراء التقطيع من نهاية المصفوفة.

قبل أن نعمل على تقسيم المصفوفة، دعونا نفهم أولاً كيفية تطبيق الشريحة على مصفوفة بسيطة.

import numpy as np

arr = np.array([2,4,6,8,10,12,14,16])
print(arr[3:6]) # will print the elements from 3 to 5
print(arr[:5]) # will print the elements from 0 to 4
print(arr[2:]) # will print the elements from 2 to length of the array.
print(arr[-5:-1]) # will print from the end i.e. -5 to -2
print(arr[:-1]) # will print from end i.e. 0 to -2

الإخراج:

[ 8 10 12]
[ 2  4  6  8 10]
[ 6  8 10 12 14 16]
[ 8 10 12 14]
[ 2  4  6  8 10 12 14]

الآن دعونا ننفذ التقطيع على المصفوفة. لإجراء التقطيع على المصفوفة

سيكون بناء الجملة M1[row_start:row_end, col_start:col_end]

  • ستكون البداية/النهاية الأولى للصف، أي لتحديد صفوف المصفوفة.
  • البداية/النهاية الثانية ستكون للعمود، أي لتحديد أعمدة المصفوفة.

المصفوفة M1 t التي سنستخدمها هي كما يلي:

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])

هناك إجمالي 4 صفوف. يبدأ الفهرس من 0 إلى 3. 0th الصف هو [2,4,6,8,10،1،XNUMX،XNUMX،XNUMX]، XNUMXst الصف هو [3,6,9،12،15،-2،-XNUMX] متبوعًا بـ XNUMXnd و 3rd.

تحتوي المصفوفة M1 على 5 أعمدة. يبدأ المؤشر من 0 إلى 4.ال0th يحتوي العمود على قيم [2,3,4,5،1،XNUMX،XNUMX]، XNUMXst تحتوي الأعمدة على قيم [4,6,8،10،2،-XNUMX] متبوعة بالرقم XNUMXnd، 3rd، 4th، و شنومكسth.

فيما يلي مثال يوضح كيفية الحصول على بيانات الصفوف والأعمدة من المصفوفة باستخدام التقطيع. في المثال، نقوم بطباعة 1st و 2nd الصف، وبالنسبة للأعمدة، نريد العمود الأول والثاني والثالث. للحصول على هذا الناتج استخدمنا: M1[1:3, 1:4]

على سبيل المثال:

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[1:3, 1:4]) # For 1:3, it will give first and second row.
#The columns will be taken from first to third.

الإخراج:

[[  6   9 -12]
 [  8  12  16]]

مثال: لطباعة كافة الصفوف والأعمدة الثالثة

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:,3]) # This will print all rows and the third column data.

الإخراج:

[  8 -12  16 -20]

مثال: لطباعة الصف الأول وجميع الأعمدة

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:1,]) # This will print first row and all columns

الإخراج:

[[ 2  4  6  8 10]]

مثال: لطباعة الصفوف الثلاثة الأولى وأول عمودين

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:3,:2])

الإخراج:

[[2 4]
 [3 6]
 [4 8]]

الوصول إلى مصفوفة NumPy

لقد رأينا كيف يعمل التقطيع. وبأخذ ذلك في الاعتبار، سنتعرف على كيفية الحصول على الصفوف والأعمدة من المصفوفة.

لطباعة صفوف المصفوفة

في المثال سيتم طباعة صفوف المصفوفة.

على سبيل المثال:

import numpy as np
M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
print(M1[0])  #first row
print(M1[1]) # the second row
print(M1[-1]) # -1 will print the last row

الإخراج:

[3 6 9]
[  5 -10  15]
[ 4  8 12]

للحصول على الصف الأخير، يمكنك الاستفادة من الفهرس أو -1. على سبيل المثال، تحتوي المصفوفة على 3 صفوف،

لذا فإن M1[0] سيعطيك الصف الأول،

M1[1] سيعطيك الصف الثاني

سيعطيك M1[2] أو M1[-1] الصف الثالث أو الصف الأخير.

لطباعة أعمدة المصفوفة

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:,0]) # Will print the first Column
print(M1[:,3]) # Will  print the third Column
print(M1[:,-1]) # -1 will give you the last column

الإخراج:

[2 3 4 5]
[  8 -12  16 -20]
[ 10 -15 -20  25]

الأسئلة الشائعة

المصفوفة هي عبارة عن مجموعة بيانات مستطيلة ثنائية الأبعاد مرتبة في صفوف وأعمدة. Python لا يحتوي على نوع مصفوفة مدمج، لذلك يمكنك استخدام القوائم المتداخلة أو مكتبة NumPy.

قم بإنشاء مصفوفة كقائمة متداخلة، مثل [[8, 14, -6], [12, 7, 4]]، أو باستخدام numpy.array() للحصول على مصفوفة أسرع وأكثر قوة تدعم العمليات المدمجة.

يقوم NumPy بمعالجة المصفوفات بشكل أسرع من القوائم العادية ويوفر عمليات مصفوفة مدمجة مثل الجمع والضرب النقطي والتبديل والتقطيع، مما يجعل كود المصفوفة أقصر وأكثر كفاءة.

لإجراء عملية ضرب المصفوفات الحقيقية، استخدم numpy.dot(M1, M2) أو M1.dot(M2). أما عاملي الجمع والضرب في مصفوفات NumPy فيقومان بعملية الجمع والضرب عنصرًا بعنصر.

استدعِ الدالة transpose() على مصفوفة NumPy، مثل M1.transpose(). تقوم هذه الدالة بتبديل الصفوف والأعمدة، بحيث ينتقل العنصر الموجود في الصف i والعمود j إلى الصف j والعمود i.

تُكمل المساعدات الذكية مثل GitHub Copilot تلقائيًا كود مصفوفات NumPy، وتُنشئ عمليات المصفوفات مثل الضرب النقطي وعمليات النقل، وتشرح صيغة التقطيع أثناء الكتابة. Python.

نعم. يمكن للأدوات المدعومة بالذكاء الاصطناعي أتمتة كتابة مسارات NumPy، واختيار العمليات المتجهة الفعالة بدلاً من الحلقات، وإنشاء التعليمات البرمجية لمهام الجبر الخطي مثل حل أنظمة المعادلات.

استخدم M1[row_start:row_end, col_start:col_end] لتحديد مصفوفة فرعية. يؤدي حذف بداية أو نهاية إلى استخدام حدود المصفوفة، ويتم حساب الفهارس السالبة من النهاية.

تلخيص هذه التدوينة بـ: