في هذا البرنامج التعليمي، سوف نتعرف على مصفوفات بايثون. في بايثون، يشبه كائن المصفوفة القوائم المتداخلة لأنها متعددة الأبعاد. سنرى كيفية إنشاء مصفوفة باستخدام صفائف Numpy. بعد ذلك، سنرى طرق وأمثلة مختلفة لعمليات المصفوفة لفهم أفضل.
ما هي المصفوفة في بايثون؟
المصفوفة في بايثون هي مصفوفة Numpy مستطيلة الشكل. يجب أن تكون هذه المصفوفة ثنائية الأبعاد. أنه يحتوي على البيانات المخزنة في صفوف وأعمدة المصفوفة. في مصفوفة بايثون، يُشار إلى السلسلة الأفقية من العناصر باسم 'الصفوف'، بينما يُشار إلى السلسلة الرأسية من العناصر باسم 'الأعمدة'. يتم تكديس الصفوف والأعمدة فوق بعضها البعض تمامًا مثل القائمة المتداخلة. إذا كانت المصفوفة تحتوي على عدد r من الصفوف وعدد c من الأعمدة، حيث r وc أعداد صحيحة موجبة، فإن r x c يحدد ترتيب كائن المصفوفة هذا.
يمكننا تخزين السلاسل والأعداد الصحيحة والكائنات من أنواع البيانات الأخرى في المصفوفة. يتم تخزين البيانات في أكوام من الصفوف والأعمدة في المصفوفة. المصفوفة هي بنية بيانات مهمة لإجراء العمليات الحسابية في الرياضيات والعلوم. في بايثون، نعتبر قائمة القوائم أو القائمة المتداخلة بمثابة مصفوفة لأن بايثون لا تتضمن أي نوع مدمج لكائن المصفوفة.
في سياق هذا البرنامج التعليمي، سنستعرض القائمة التالية لطرق تشغيل المصفوفة.
الحصول على اتصال
- إضافة مصفوفة
- ضرب المصفوفة
- عامل الضرب المصفوفة
- ضرب المصفوفة بدون Numpy
- مصفوفة معكوسة
- تبديل المصفوفة
- مصفوفة للصفيف
كيف تعمل المصفوفات في بايثون؟
نكتب البيانات في مصفوفة ثنائية الأبعاد لإنشاء مصفوفة. ويتم ذلك على النحو التالي:
مثال
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
يعرض مصفوفة مكونة من 3 صفوف و5 أعمدة، بحيث يكون أبعادها 3×5. تشكل كائنات نوع البيانات الصحيحة البيانات الموجودة في هذه المصفوفة. الصف 1، الصف الأول، له قيم (2، 3، 5، 7، 6)، بينما الصف 2 له قيم (3، 2، 6، 7، 2) والصف 3 له قيم 5، 7، 2، 6، 1. الأعمدة، العمود 1 له قيم (2، 3، 5)، والعمود 2 له قيم (3، 2، 7)، وهكذا.
مثال
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
يعرض مصفوفة تحتوي على 3 صفوف و 3 أعمدة، بحيث يكون أبعادها 3×3. تسمى هذه المصفوفات التي لها صفوف وأعمدة متساوية بالمصفوفات المربعة.
وبالمثل، تسمح بايثون للمستخدمين بتخزين بياناتهم داخل مصفوفة الأبعاد mxn. يمكننا إجراء جمع المصفوفات، والضرب، والتحويل، وغيرها من العمليات على بنية تشبه المصفوفة.
تنفيذ كائن المصفوفة في بايثون ليس بالأمر السهل. يمكننا إنشاء مصفوفة بايثون باستخدام المصفوفات واستخدامها بالمثل.
صفيف NumPy
يدعم برنامج الحوسبة العلمية NumPy كائنات مصفوفة قوية ذات أبعاد N. يعد تثبيت NumPy شرطًا أساسيًا لاستخدامه في برنامجنا.
كم عدد الفواكه هناك
يمكن استخدام NumPy واستيراده بعد التثبيت. إن معرفة أساسيات Numpy Array ستكون مفيدة في فهم المصفوفات.
يتم توفير المصفوفات ذات أبعاد متعددة للعناصر بواسطة NumPy. وهنا رسم توضيحي:
شفرة
# Python program to show how to create a Numpy array # Importing numpy import numpy as np # Creating a numpy array array = np.array([4, 6, 'Harry']) print(array) print('Data type of array object: ', type(array))
انتاج:
['4' '6' 'Harry'] Data type of array object:
كما نرى، تنتمي صفائف Numpy إلى فئة ndarray.
مثال لإنشاء مصفوفة باستخدام Numpy Array
فكر في السيناريو الذي نقوم فيه بإنشاء سجل لعلامات الطلاب. سنقوم بتسجيل اسم الطالب وعلاماته في مادتين، برمجة بايثون، وماتريكس. سنقوم بإنشاء مصفوفة ثنائية الأبعاد باستخدام مصفوفة numpy ثم نعيد تشكيلها.
شفرة
# Python program to create a matrix using numpy array # Importing numpy import numpy as np # Creating the matrix record = np.array( [['Itika', 89, 91], ['Aditi', 96, 82], ['Harry', 91, 81], ['Andrew', 87, 91], ['Peter', 72, 79]]) matrix = np.reshape(record, (5,3)) print('The matrix is: ', matrix)
انتاج:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
مثال لإنشاء مصفوفة باستخدام طريقة Numpy Matrix
يمكننا استخدام numpy.matrix لإنشاء مصفوفة ثنائية الأبعاد.
شفرة
# Python program to show how to create a matrix using the matrix method # importing numpy import numpy as np # Creating a matrix matrix = np.matrix('3,4;5,6') print(matrix)
انتاج:
[[3 4] [5 6]]
الوصول إلى قيم المصفوفة
يمكن استخدام مؤشرات المصفوفة للوصول إلى العناصر المخزنة فيها. يمكن الوصول إلى البيانات المخزنة في المصفوفة باستخدام نفس النهج الذي نستخدمه لمصفوفة ثنائية الأبعاد.
شفرة
# Python program to access elements of a matrix # Importing numpy import numpy as np # Creating the matrix record = np.array( [['Itika', 89, 91], ['Aditi', 96, 82], ['Harry', 91, 81], ['Andrew', 87, 91], ['Peter', 72, 79]]) matrix = np.reshape(record, (5,3)) # Accessing record of Itika print( matrix[0] ) # Accessing marks in the matrix subject of Andrew print( 'Andrew's marks in Matrix subject: ', matrix[3][2] )
انتاج:
الأبجدية مرقمة
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
طرق إنشاء مصفوفة Numpy أو مصفوفة ثنائية الأبعاد
هناك عدة طرق لإنشاء مصفوفة NumPy ثنائية الأبعاد ومن ثم إنشاء مصفوفة. توفير إدخالات للصفوف والأعمدة
يمكننا توفير الأعداد الصحيحة، والأعداد العائمة، أو حتى الأعداد المركبة. باستخدام سمة dtype لأسلوب المصفوفة، يمكننا تحديد نوع البيانات الذي نريده.
شفرة
# Python program to show how to create a Numpy array # Importing numpy import numpy as np # Creating numpy arrays array1 = np.array([[4, 2, 7, 3], [2, 8, 5, 2]]) print('Array of data type integers: ', array1) array2 = np.array([[1.5, 2.2, 3.1], [3, 4.4, 2]], dtype = 'float') print('Array of data type float: ', array2) array3 = np.array([[5, 3, 6], [2, 5, 7]], dtype = 'complex') print('Array of data type complex numbers: ', array3)
انتاج:
Array of data type integers: [[4 2 7 3] [2 8 5 2]] Array of data type float: [[1.5 2.2 3.1] [3. 4.4 2. ]] Array of data type complex numbers: [[5.+0.j 3.+0.j 6.+0.j] [2.+0.j 5.+0.j 7.+0.j]]
مصفوفة تحتوي على صفر وآحاد
شفرة
# Python program to show how to create a Numpy array having zeroes and ones # Importing numpy import numpy as np # Creating numpy arrays zeores_array = np.zeros( (3, 2) ) print(zeores_array) ones_array = np.ones( (2, 4), dtype=np.int64 ) print(ones_array)
انتاج:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
لقد حددنا هنا dtype إلى 64 بت.
استخدام الطرق arange() و Shape()
شفرة
# Python program to show how to create Numpy array using arrange() and shape() methods # Importing numpy import numpy as np # Creating numpy arrays array1 = np.arange( 5 ) print(array1) array2 = np.arange( 6 ).reshape( 2, 3 ) print(array2)
انتاج:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
عمليات مصفوفة بايثون
إضافة مصفوفة بايثون
سنجمع المصفوفتين ونستخدم حلقة for المتداخلة خلال المصفوفات المعطاة.
شفرة
# Python program to add two matrices without using numpy # Creating matrices in the form of nested lists matrix1 = [[23, 43, 12], [43, 13, 55], [23, 12, 13]] matrix2 = [[4, 2, -1], [5, 4, -34], [0, -4, 3]] matrix3 = [[0,1,0], [1,0,0], [0,0,1]] matrix4 = [[0,0,0], [0,0,0], [0,0,0]] matrices_length = len(matrix1) #Adding the three matrices using nested loops for row in range(len(matrix1)): for column in range(len(matrix2[0])): matrix4[row][column] = matrix1[row][column] + matrix2[row][column] + matrix3[row][column] #Printing the final matrix print('The sum of the matrices is = ', matrix4)
انتاج:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
الضرب في مصفوفة بايثون
عامل الضرب لمصفوفة بايثون
إعادة تسمية الدليل
يُعرف @ في Python باسم عامل الضرب. دعونا نرى مثالاً حيث سنستخدم هذا العامل لضرب مصفوفتين.
شفرة
# Python program to show how to create a matrix using the matrix method. # importing numpy import numpy as np # Creating the matrices matrix1 = np.matrix('3,4;5,6') matrix2 = np.matrix('4,6;8,2') # Usng multiplication operator to multiply two matrices print(matrix1 @ matrix2)
انتاج:
[[44 26] [68 42]]
ضرب مصفوفة بايثون بدون استخدام Numpy
هناك طريقة أخرى لضرب مصفوفتين وهي استخدام الحلقات المتداخلة. هنا مثال للعرض.
شفرة
# Python program to show how to create a matrix using the matrix method # importing numpy import numpy as np # Creating two matrices matrix1 = [[4, 6, 2], [7, 4, 8], [6, 2, 7]] matrix2 = [[4, 6, 8, 2], [6, 5, 3, 7], [7, 3, 7, 6]] # Result will be a 3x4 matrix output = [[0,0,0,0], [0,0,0,0], [0,0,0,0]] # Iterating through the rows of matrix1 for i in range(len(matrix1)): # iterating through the columns of matrix2 for j in range(len(matrix2[0])): # iterating through the rows of matrix2 for k in range(len(matrix2)): output[i][j] += matrix1[i][k] * matrix2[k][j] for row in output: print(row)
انتاج:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
مصفوفة بايثون معكوسة
عندما تكون هناك حاجة إلى حل معادلة للحصول على قيمة متغير مجهول يحقق المعادلات، يتم حساب معكوس المصفوفة، وهو مجرد مقلوب المصفوفة كما نفعل في الرياضيات العادية. معكوس المصفوفة هو المصفوفة التي تعطي مصفوفة الهوية عندما نضرب في المصفوفة الأصلية. فقط المصفوفة غير المفردة يمكن أن يكون لها معكوس. المصفوفة غير المفردة لها محدد غير صفري.
شفرة
# Python program to show how to calculate the inverse of a matrix # Importing the required library import numpy as np # Creating a matrix A = np.matrix('3, 4, 6; 6, 2, 7; 6, 4, 6') # Calculating the inverse of A print(np.linalg.inv(A))
انتاج:
[[-3.33333333e-01 -7.40148683e-17 3.33333333e-01] [ 1.25000000e-01 -3.75000000e-01 3.12500000e-01] [ 2.50000000e-01 2.50000000e-01 -3.75000000e-01]]
تبديل مصفوفة بايثون
تبديل مصفوفة بايثون بدون Numpy
وظيفة سلسلة فرعية جافا
يتضمن تبديل المصفوفة تبديل الصفوف والأعمدة. يحمل الرمز X'. سنضع الكائن في الصف i والعمود j من المصفوفة X في الصف j والعمود i من المصفوفة X'. وبالتالي، فإن X' ستصبح مصفوفة 4x3 إذا كانت المصفوفة الأصلية X هي مصفوفة 3x4.
شفرة
# Python program to find the transpose of a matrix using nested loops # Creating a matrix matrix = [[4, 6, 7, 8], [3, 7, 2, 7], [7, 3, 7, 5]] result = [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] # iterating through the rows for i in range(len(matrix)): # iterating through the columns for j in range(len(matrix[0])): result[j][i] = matrix[i][j] for row in result: print(row)
انتاج:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
تبديل مصفوفة بايثون باستخدام Numpy
يمكننا استخدام طريقة Matrix.transpose() في Numpy للحصول على تبديل المصفوفة.
شفرة
# Python program to find the transpose of a matrix # importing the required module import numpy as np # Creating a matrix using matrix method matrix = np.matrix('[5, 7, 6; 4, 2, 4]') #finding transpose using matrix.transpose method transpose = matrix.transpose() print(transpose)
انتاج:
[[5 4] [7 2] [6 4]]
تحويل مصفوفة بايثون إلى صفيف
يمكننا استخدام وظائف ravel و flatten لتحويل مصفوفة Python إلى مصفوفة Python.
شفرة
# Python program to convert a matrix to an array # importing the required module import numpy as np # Creating a matrix using numpy matrix = np.matrix('[4, 6, 7; 5, 2, 6; 6, 3, 6]') # Using ravel() function to covert matrix to array array = matrix.ravel() print(array) # Using flatten() function to covert matrix to array array = np.asarray(matrix).flatten() print(array) # Using reshape() function to covert matrix to array array = (np.asarray(matrix)).reshape(-1) print(array)
انتاج:
[[4 6 7 5 2 6 6 3 6]] [4 6 7 5 2 6 6 3 6] [4 6 7 5 2 6 6 3 6]