U ovom vodiču naučit ćemo o Python matricama. U Pythonu je matrični objekt sličan ugniježđenim listama jer su višedimenzionalni. Vidjet ćemo kako stvoriti matricu koristeći Numpy nizove. Nakon toga, vidjet ćemo različite metode matričnih operacija i primjere za bolje razumijevanje.
životni ciklus razvoja softvera
Što je matrica u Pythonu?
Matrica u Pythonu je pravokutni Numpy niz. Ovaj niz mora biti dvodimenzionalan. Sadrži podatke pohranjene u redovima i stupcima niza. U Python matrici, vodoravni niz stavki naziva se 'redovima', dok se okomiti niz stavki naziva 'stupcima'. Redovi i stupci naslagani su jedni preko drugih poput ugniježđene liste. Ako matrica sadrži r broj redaka i c broj stupaca, gdje su r i c pozitivni cijeli brojevi, tada r x c određuje redoslijed ovog objekta matrice.
U matricu možemo pohraniti nizove, cijele brojeve i objekte drugih tipova podataka. Podaci se pohranjuju u nizove redaka i stupaca u matrici. Matrica je ključna struktura podataka za izračune u matematici i znanosti. U Pythonu popis popisa ili ugniježđeni popis smatramo matricom budući da Python ne uključuje nijedan ugrađeni tip za objekt matrice.
Tijekom ovog vodiča, proći ćemo kroz sljedeći popis metoda rada matrice.
- Zbrajanje matrice
- Množenje matrice
- Operator množenja matrice
- Množenje matrica bez Numpyja
- Inverzna matrica
- Transponiranje matrice
- Matrica u niz
Kako funkcioniraju matrice u Pythonu?
Zapisujemo podatke u dvodimenzionalni niz kako bismo stvorili matricu. To se radi na sljedeći način:
Primjer
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Prikazuje matricu koja ima 3 reda i 5 stupaca, tako da je njezina dimenzija 3×5. Objekti tipa cjelobrojnih podataka čine podatke u ovoj matrici. Redak1, prvi redak, ima vrijednosti (2, 3, 5, 7, 6), dok redak2 ima vrijednosti (3, 2, 6, 7, 2), a redak3 ima vrijednosti 5, 7, 2, 6, 1. Što se tiče stupaca, Stupac1 ima vrijednosti (2, 3, 5), Stupac2 ima vrijednosti (3, 2, 7) i tako dalje.
Primjer
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Prikazuje matricu koja ima 3 retka i 3 stupca, tako da je njezina dimenzija 3×3. Takve matrice koje imaju jednake retke i stupce nazivaju se kvadratne matrice.
Slično tome, Python dopušta korisnicima da pohranjuju svoje podatke unutar m x n dimenzionalne matrice. Možemo izvesti zbrajanje matrica, množenje, transpoziciju i druge operacije na strukturi sličnoj matrici.
Implementacija matričnog objekta u Pythonu nije jednostavna. Možemo izraditi Python matricu koristeći nizove i na sličan način ih koristiti.
Niz NumPy
Znanstveni računalni softver NumPy podržava robustan N-dimenzionalni niz objekata. Instaliranje NumPy-ja je preduvjet za korištenje u našem programu.
zasebni niz u Javi
NumPy se može koristiti i uvesti nakon instalacije. Poznavanje osnova Numpy polja pomoći će u razumijevanju matrica.
NumPy pruža nizove koji imaju više dimenzija stavki. Evo ilustracije:
Kodirati
# 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))
Izlaz:
['4' '6' 'Harry'] Data type of array object:
Kao što vidimo, Numpy nizovi pripadaju klasi ndarray.
Primjer stvaranja matrice pomoću Numpy polja
Razmislite o scenariju u kojem stvaramo evidenciju ocjena učenika. Zabilježit ćemo ime učenika i ocjene iz dva predmeta, Python programiranje i Matrix. Stvorit ćemo dvodimenzionalnu matricu pomoću numpy polja i zatim je preoblikovati.
Kodirati
# 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)
Izlaz:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Primjer stvaranja matrice korištenjem metode Numpy Matrix
Možemo koristiti numpy.matrix za stvaranje 2D matrice.
Kodirati
# 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)
Izlaz:
[[3 4] [5 6]]
Pristup vrijednostima matrice
Indeksi matrice mogu se koristiti za pristup elementima pohranjenim u njoj. Podaci pohranjeni u matrici dostupni su istim pristupom koji koristimo za dvodimenzionalni niz.
tvornički dizajn uzorak
Kodirati
# 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] )
Izlaz:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Metode za stvaranje 2-D Numpy polja ili matrice
Postoji nekoliko metoda za stvaranje dvodimenzionalnog NumPy polja, a time i matrice. Pružanje unosa za retke i stupce
Možemo dati cijele brojeve, brojeve s pomičnim brojem ili čak složene brojeve. Koristeći atribut dtype metode niza, možemo specificirati vrstu podataka koju želimo.
Kodirati
# 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)
Izlaz:
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]]
Niz s nulama i jedinicama
Kodirati
# 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)
Izlaz:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Ovdje smo naveli dtype na 64 bita.
Korištenje metoda arange() i shape().
Kodirati
# 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)
Izlaz:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Python matrične operacije
Dodavanje Python matrice
Dodat ćemo dvije matrice i koristiti ugniježđenu for petlju kroz zadane matrice.
Kodirati
# 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)
Izlaz:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Python množenje matrice
Python matrični operator množenja
U Pythonu @ je poznat kao operator množenja. Pogledajmo primjer u kojem ćemo koristiti ovaj operator za množenje dviju matrica.
Kodirati
# 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)
Izlaz:
[[44 26] [68 42]]
Python množenje matrica bez korištenja Numpyja
Drugi način množenja dviju matrica je korištenje ugniježđenih petlji. Evo primjera za pokazati.
Kodirati
singleton dizajn
# 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)
Izlaz:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Inverzna Python matrica
Kada treba riješiti jednadžbu da bi se dobila vrijednost nepoznate varijable koja zadovoljava jednadžbe, izračunava se inverzna vrijednost matrice, koja je samo recipročna vrijednost matrice kao što bismo to učinili u običnoj matematici. Inverzna matrica je matrica koja daje matricu identiteta kada pomnožimo s izvornom matricom. Samo nesingularna matrica može imati inverz. Nesingularna matrica ima determinantu različitu od nule.
koliko tipki imaju tipkovnice
Kodirati
# 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))
Izlaz:
[[-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
Transponiranje Python matrice bez Numpyja
Transpozicija matrice uključuje izmjenu redaka i stupaca. Ima simbol X'. Objekt ćemo staviti u red i i stupac j matrice X u red j i stupac i matrice X'. Posljedično, X' će postati matrica 4x3 ako je originalna matrica X matrica 3x4.
Kodirati
# 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)
Izlaz:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Transponiranje Python matrice pomoću Numpyja
Možemo koristiti metodu matrix.transpose() u Numpyju da dobijemo transponiranje matrice.
Kodirati
# 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)
Izlaz:
[[5 4] [7 2] [6 4]]
Pretvaranje Python matrice u polje
Možemo koristiti ravel i flatten funkcije za pretvaranje Python matrice u Python niz.
Kodirati
# 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)
Izlaz:
[[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]