V tomto návode sa naučíme o maticách Pythonu. V Pythone je maticový objekt podobný vnoreným zoznamom, keďže sú viacrozmerné. Uvidíme, ako vytvoriť maticu pomocou polí Numpy. Potom uvidíme rôzne metódy maticových operácií a príklady pre lepšie pochopenie.
Čo je matica v Pythone?
Matica v Pythone je obdĺžnikové pole Numpy. Toto pole musí byť dvojrozmerné. Obsahuje údaje uložené v riadkoch a stĺpcoch poľa. V matici Pythonu sa horizontálne série položiek označujú ako „riadky“, zatiaľ čo vertikálne série položiek sa označujú ako „stĺpce“. Riadky a stĺpce sú naukladané jeden cez druhý rovnako ako vnorený zoznam. Ak matica obsahuje r počet riadkov a c počet stĺpcov, kde r a c sú kladné celé čísla, potom r x c určuje poradie tohto maticového objektu.
Do matice môžeme ukladať reťazce, celé čísla a objekty iných dátových typov. Údaje sú uložené v hromadách riadkov a stĺpcov v matici. Matica je kľúčovou dátovou štruktúrou pre výpočty v matematike a prírodných vedách. V Pythone považujeme zoznam zoznamov alebo vnorený zoznam za maticu, pretože Python neobsahuje žiadny vstavaný typ pre objekt matice.
V priebehu tohto tutoriálu si prejdeme nasledujúci zoznam metód maticovej operácie.
- Pridanie matice
- Maticové násobenie
- Operátor násobenia matice
- Maticové násobenie bez Numpyho
- Inverzná matica
- Maticová transpozícia
- Matica do poľa
Ako fungujú matice v Pythone?
Údaje zapisujeme do dvojrozmerného poľa, aby sme vytvorili maticu. Vykonáva sa nasledovne:
Príklad
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Zobrazuje maticu s 3 riadkami a 5 stĺpcami, takže jej rozmer je 3×5. Objekty typu celočíselné údaje tvoria údaje v tejto matici. Row1, prvý riadok, má hodnoty (2, 3, 5, 7, 6), kým Row2 má hodnoty (3, 2, 6, 7, 2) a Row3 má hodnoty 5, 7, 2, 6, 1. stĺpce, Stĺpec1 má hodnoty (2, 3, 5), Stĺpec2 má hodnoty (3, 2, 7) atď.
Príklad
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Zobrazuje maticu s 3 riadkami a 3 stĺpcami, takže jej rozmer je 3×3. Takéto matice, ktoré majú rovnaké riadky a stĺpce, sa nazývajú štvorcové matice.
Podobne Python umožňuje používateľom ukladať svoje údaje v matici rozmerov m x n. Na štruktúre podobnej matici môžeme vykonávať sčítanie matíc, násobenie, transpozíciu a ďalšie operácie.
Implementácia maticového objektu v Pythone nie je jednoduchá. Pomocou polí môžeme vytvoriť maticu Pythonu a podobne ich použiť.
NumPy Array
Vedecký výpočtový softvér NumPy podporuje robustný objekt N-dimenzionálneho poľa. Inštalácia NumPy je nevyhnutným predpokladom používania v našom programe.
NumPy je možné použiť a importovať po inštalácii. Znalosť základov Numpy Array vám pomôže pochopiť matice.
Polia s viacerými rozmermi položiek poskytuje NumPy. Tu je ilustrácia:
kód
# 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))
Výkon:
['4' '6' 'Harry'] Data type of array object:
Ako vidíme, polia Numpy patria do triedy ndarray.
Príklad na vytvorenie matice pomocou Numpy Array
Zamyslite sa nad scenárom, kedy vytvoríme záznam o známkach žiakov. Meno a známky žiaka zaznamenáme v dvoch predmetoch, programovanie v Pythone a Matrix. Vytvoríme dvojrozmernú maticu pomocou numpy poľa a potom ju pretvoríme.
kód
# 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)
Výkon:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Príklad na vytvorenie matice pomocou metódy Numpy matice
Na vytvorenie 2D matice môžeme použiť numpy.matrix.
kód
# 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)
Výkon:
[[3 4] [5 6]]
Prístup k hodnotám matice
Indexy matice možno použiť na prístup k prvkom, ktoré sú v nej uložené. Údaje uložené v matici sú prístupné pomocou rovnakého prístupu, aký používame pre dvojrozmerné pole.
kód
# 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] )
Výkon:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Metódy na vytvorenie 2-D Numpy Array alebo matice
Existuje niekoľko metód na vytvorenie dvojrozmerného poľa NumPy a teda aj matice. Poskytovanie záznamov pre riadky a stĺpce
Môžeme poskytnúť celé čísla, pohyblivé čísla alebo dokonca komplexné čísla. Pomocou atribútu dtype metódy poľa môžeme určiť požadovaný typ údajov.
kód
# 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)
Výkon:
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]]
Pole s nulami a jednotkami
kód
# 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)
Výkon:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Tu sme špecifikovali dtype na 64 bitov.
Použitie metód arange() a shape().
kód
# 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)
Výkon:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Operácie Python Matrix
Pridanie Python Matrix
Pridáme dve matice a použijeme vnorenú slučku for cez dané matice.
kód
# 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)
Výkon:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Násobenie matice Pythonu
Operátor násobenia matice Pythonu
V Pythone je @ známy ako operátor násobenia. Pozrime sa na príklad, kde použijeme tento operátor na vynásobenie dvoch matíc.
kód
# 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)
Výkon:
bash if vyhlásenie
[[44 26] [68 42]]
Násobenie matice Pythonu bez použitia Numpy
Ďalším spôsobom násobenia dvoch matíc je použitie vnorených slučiek. Tu je príklad na ukážku.
kód
# 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)
Výkon:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python Matrix Inverse
Keď je potrebné vyriešiť rovnicu, aby sa získala hodnota neznámej premennej, ktorá spĺňa rovnice, vypočíta sa inverzná hodnota matice, ktorá je len prevrátenou hodnotou matice, ako by sme to robili v bežnej matematike. Inverzná matica je matica, ktorá dáva maticu identity, keď násobíme pôvodnou maticou. Inverznú hodnotu môže mať iba nesingulárna matica. Nesingulárna matica má nenulový determinant.
kód
# 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))
Výkon:
[[-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 bez Numpy
Transpozícia matice zahŕňa prepínanie riadkov a stĺpcov. Má symbol X'. Objekt dáme do riadku i a stĺpca j matice X do riadku j a stĺpca i matice X'. V dôsledku toho sa X' stane maticou 4x3, ak pôvodná matica X je matica 3x4.
kód
# 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)
Výkon:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Python Matrix Transpose pomocou Numpy
Na získanie transpozície matice môžeme použiť metódu matrix.transpose() v Numpy.
kód
# 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)
Výkon:
[[5 4] [7 2] [6 4]]
Konverzia Python Matrix na Array
Na konverziu matice Pythonu na pole Pythonu môžeme použiť funkcie ravel a flatten.
kód
# 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)
Výkon:
[[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]