Python Матрица: Транспониране, умножение, примери за масиви NumPy
Какво е Python матрица?
A Python матрицата е специализиран двуизмерен правоъгълен масив от данни, съхранявани в редове и колони. Данните в една матрица могат да бъдат числа, низове, изрази, символи и т.н. Матрицата е една от важните структури от данни, които могат да се използват в математически и научни изчисления.
Как Python Матриците работят?
Данните вътре в двумерния масив в матричен формат изглеждат по следния начин:
Стъпка 1) Показва матрица 2×2. Има два реда и 2 колони. Данните вътре в матрицата са числа. Ред1 има стойности 2,3, а ред2 има стойности 4,5. Колоните, т.е. col1, имат стойности 2,4, а col2 има стойности 3,5.
Стъпка 2) Показва матрица 2×3. Има два реда и три колони. Данните в първия ред, т.е. ред1, имат стойности 2,3,4, а ред2 има стойности 5,6,7. Колоните col1 имат стойности 2,5, col2 имат стойности 3,6, а col3 имат стойности 4,7.
По подобен начин можете да съхранявате данните си в матрицата nxn Python. Могат да се извършват много операции върху подобно на матрица събиране, изваждане, умножение и т.н.
Python няма лесен начин за внедряване на матричен тип данни.
Матрицата на Python използва масиви и същото може да бъде приложено.
- Създаване на Python Матрица, използваща типа данни на вложен списък
- Създаване на Python Матрица, използваща масиви от Python Пакет Numpy
Създаване на Python Матрица, използваща тип данни от вложен списък
In Python, масивите се представят с помощта на типа данни списък. Сега ще използваме списъка, за да създадем Python матрица.
Ще създадем матрица 3×3, както е показано по-долу:
- Матрицата има 3 реда и 3 колони.
- Първият ред във формат на списък ще бъде както следва: [8,14,-6]
- Вторият ред в списъка ще бъде: [12,7,4]
- Третият ред в списък ще бъде: [-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
Python библиотеката Numpy помага да се справите с масиви. Numpy обработва масив малко по-бързо в сравнение със списъка.
За да работите с Numpy, първо трябва да го инсталирате. Следвайте стъпките по-долу, за да инсталирате Numpy.
Стъпка 1) Командата за инсталиране на Numpy е:
pip install NumPy
Стъпка 2) За да използвате Numpy във вашия код, трябва да го импортирате.
import NumPy
Стъпка 3) Можете също да импортирате Numpy с помощта на псевдоним, както е показано по-долу:
import NumPy as np
Ще използваме метода array() от Numpy, за да създадем Python матрица.
Пример: Масив в 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()
Матричната операция, която може да се извърши, е събиране, изваждане, умножение, транспониране, четене на редове, колони на матрица, нарязване на матрицата и т.н. Във всички примери ще използваме метод 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]]
Матрично изваждане
За да извършим изваждане на матрицата, ще създадем две матрици с помощта на 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)
Изход:
[[ -6 24 -18] [ -6 -32 -18] [-20 40 -18]]
Матрично умножение
Първо ще създаде две матрици с помощта на numpy.arary(). За да ги умножите, можете да използвате метода numpy dot(). Numpy.dot() е точковият продукт на матрицата M1 и M2. Numpy.dot() обработва 2D масивите и извършва матрични умножения.
Пример:
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]]
Транспониране на матрица
Транспонирането на матрица се изчислява чрез промяна на редовете като колони и колоните като редове. Функцията transpose() от 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, която ще използваме, е както следва:
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], 1st редът е [3,6,9,-12,-15], последван от 2nd и 3rd.
Матрицата M1 има 5 колони. Индексът започва от 0 до 4. 0th колоната има стойности [2,3,4,5], 1st колоните имат стойности [4,6,8,-10], последвани от 2nd, 3rd, 4th, и 5th.
Ето пример, показващ как да получите данните за редовете и колоните от матрицата с помощта на нарязване. В примера ние отпечатваме 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]]
Пример: За да отпечатате първите три реда и първите 2 колони
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 Matrix
Видяхме как работи нарязването. Като вземем това предвид, ще разберем как да вземем редовете и колоните от матрицата.
За да отпечатате редовете на матрицата
В примера ще отпечатаме редовете на матрицата.
Пример:
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]
Oбобщение
- A Python матрицата е специализиран двуизмерен правоъгълен масив от данни, съхранявани в редове и колони. Данните в една матрица могат да бъдат числа, низове, изрази, символи и т.н. Матрицата е една от важните структури от данни, които могат да се използват в математически и научни изчисления.
- Python няма лесен начин за внедряване на матричен тип данни. Python матрица може да бъде създадена с помощта на тип данни за вложен списък и с помощта на библиотеката numpy.
- Python библиотеката Numpy помага да се справите с масиви. Numpy обработва масив малко по-бързо в сравнение със списъка.
- Матричната операция, която може да се извърши, е събиране, изваждане, умножение, транспониране, четене на редове, колони на матрица, нарязване на матрицата и т.н.
- За да добавите две матрици, можете да използвате numpy.array() и да ги добавите с помощта на оператора (+).
- За да ги умножите, можете да използвате метода numpy dot(). Numpy.dot() е точковият продукт на матрицата M1 и M2. Numpy.dot() обработва 2D масивите и извършва матрични умножения.
- Транспонирането на матрица се изчислява чрез промяна на редовете като колони и колоните като редове. Функцията transpose() от Numpy може да се използва за изчисляване на транспонирането на матрица.
- Нарязването на матрица ще ви върне елементите въз основа на дадения начален / краен индекс.


