У цьому підручнику ми дізнаємося про матриці Python. У Python матричний об’єкт подібний до вкладених списків, оскільки вони є багатовимірними. Ми побачимо, як створити матрицю за допомогою масивів Numpy. Після цього ми побачимо різні методи та приклади матричних операцій для кращого розуміння.
Що таке матриця в Python?
Матриця в Python — це прямокутний масив Numpy. Цей масив має бути двовимірним. Він містить дані, що зберігаються в рядках і стовпцях масиву. У матриці Python горизонтальні ряди елементів називаються «рядками», тоді як вертикальні ряди елементів називаються «стовпцями». Рядки та стовпці розташовані один над одним, як у вкладеному списку. Якщо матриця містить r кількість рядків і c кількість стовпців, де r і c — додатні цілі числа, то r x c визначає порядок цього об’єкта матриці.
Ми можемо зберігати рядки, цілі числа та об’єкти інших типів даних у матриці. Дані зберігаються в стеках рядків і стовпців у матриці. Матриця є важливою структурою даних для обчислень у математиці та науці. У Python ми розглядаємо список списків або вкладений список як матрицю, оскільки Python не містить жодного вбудованого типу для об’єкта матриці.
У ході цього підручника ми розглянемо наступний список методів роботи з матрицею.
- Додавання матриць
- Матричне множення
- Оператор множення матриць
- Множення матриць без Numpy
- Обернена матриця
- Транспонування матриці
- Матриця в масив
Як працюють матриці в Python?
Ми записуємо дані в двовимірний масив, щоб створити матрицю. Це робиться наступним чином:
приклад
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Він відображає матрицю, яка має 3 рядки та 5 стовпців, тому її розмір дорівнює 3×5. Цілочисельні об’єкти типу даних складають дані в цій матриці. Перший рядок Row1 має значення (2, 3, 5, 7, 6), тоді як Row2 має значення (3, 2, 6, 7, 2), а Row3 має значення 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. Такі матриці, що мають рівні рядки та стовпці, називаються квадратними матрицями.
Так само Python дозволяє користувачам зберігати свої дані в матриці розмірів m x n. Ми можемо виконувати додавання матриць, множення, транспонування та інші операції над матричною структурою.
Реалізація матричного об’єкта в Python непроста. Ми можемо створити матрицю Python за допомогою масивів і аналогічно використовувати їх.
Масив 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
Подумайте про сценарій, за яким ми створюємо запис оцінок учнів. Ми запишемо ім’я та оцінки студента з двох предметів, програмування на Python та Matrix. Ми створимо двовимірну матрицю за допомогою масиву 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 методу array, ми можемо вказати потрібний тип даних.
Код
# 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]]
Матричні операції Python
Доповнення Python Matrix
Ми додамо дві матриці та використаємо вкладений цикл 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
У 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)
Вихід:
черга в java
[[44 26] [68 42]]
Множення матриць Python без використання 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
Коли необхідно розв’язати рівняння, щоб отримати значення невідомої змінної, яке задовольняє рівняння, обчислюється обернена матриця, яка є лише зворотною величиною матриці, як це було б у звичайній математиці. Обернена матриця – це матриця, яка дає одиничну матрицю, коли ми множимо її на вихідну матрицю. Тільки неособлива матриця може мати обернену. Неособлива матриця має ненульовий визначник.
Код
# 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]]
Python Matrix Transpose
Python Matrix Transpose без 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]
Транспонування матриці Python за допомогою 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]]
Перетворення матриці Python на масив
Ми можемо використовувати функції 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]