logo

Python Matrix

В този урок ще научим за матриците на Python. В Python матричният обект е подобен на вложените списъци, тъй като те са многоизмерни. Ще видим как да създадем матрица с помощта на масиви Numpy. След това ще видим различни методи за матрични операции и примери за по-добро разбиране.

Какво е матрица в Python?

Матрицата в Python е правоъгълен масив Numpy. Този масив трябва да е двуизмерен. Той съдържа данни, съхранени в редовете и колоните на масива. В матрицата на Python хоризонталните серии от елементи се наричат ​​„редове“, докато вертикалните серии от елементи се наричат ​​„колони“. Редовете и колоните са подредени един върху друг точно като вложен списък. Ако една матрица съдържа r брой редове и c брой колони, където r и c са положителни цели числа, тогава r x c определя реда на този матричен обект.

Можем да съхраняваме низове, цели числа и обекти от други типове данни в матрица. Данните се съхраняват в стекове от редове и колони в матрица. Матрицата е ключова структура от данни за изчисления в математиката и науката. В Python ние считаме списък със списъци или вложен списък като матрица, тъй като Python не включва никакъв вграден тип за матричен обект.

В хода на този урок ще преминем през следния списък с методи за работа с матрица.

  • Събиране на матрица
  • Матрично умножение
  • Оператор за умножение на матрици
  • Умножение на матрици без Numpy
  • Обратна матрица
  • Транспониране на матрица
  • Матрица към масив

Как работят матриците в Python?

Записваме данни в двумерен масив, за да създадем матрица. Извършва се по следния начин:

c# превключвател

Пример

 [ 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. Такива матрици с равни редове и колони се наричат ​​квадратни матрици.

По подобен начин 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, за да създадем 2D матрица.

Код

 # 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 

Методи за създаване на 2-D 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 Matrix Multiplication без използване на 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 Matrix Inverse

Когато трябва да се реши уравнение, за да се получи стойността на неизвестна променлива, която удовлетворява уравненията, се изчислява обратната стойност на матрица, която е просто реципрочната стойност на матрицата, както бихме направили в обикновената математика. Обратната на матрицата е матрицата, която дава матрицата на идентичност, когато умножим с оригиналната матрица. Само неособена матрица може да има обратна. Неособената матрица има ненулев детерминант.

Код

 # 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 Matrix Transpose с помощта на 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]