I denne tutorial lærer vi om Python-matricer. I Python ligner et matrixobjekt indlejrede lister, da de er flerdimensionelle. Vi vil se, hvordan man opretter en matrix ved hjælp af Numpy-arrays. Efter dette vil vi se forskellige matrix operationsmetoder og eksempler for bedre forståelse.
Hvad er en matrix i Python?
En matrix i Python er et rektangulært Numpy-array. Dette array skal være todimensionelt. Den indeholder data, der er gemt i arrayets rækker og kolonner. I en Python-matrix omtales den vandrette serie af elementer som 'rækker', mens den lodrette række af elementer omtales som 'kolonner'. Rækkerne og kolonnerne er stablet over hinanden ligesom en indlejret liste. Hvis en matrix indeholder r antal rækker og c antal kolonner, hvor r og c er positive heltal, så bestemmer r x c rækkefølgen af dette matrixobjekt.
Vi kan gemme strenge, heltal og objekter af andre datatyper i en matrix. Data gemmes i stakken af rækker og kolonner i en matrix. Matrixen er en afgørende datastruktur for beregninger i matematik og naturvidenskab. I Python betragter vi en liste over lister eller en indlejret liste som en matrix, da Python ikke indeholder nogen indbygget type for et matrixobjekt.
I løbet af denne øvelse vil vi gennemgå følgende liste over matrixdriftsmetoder.
- Matrix tilføjelse
- Matrix multiplikation
- Matrix multiplikationsoperator
- Matrix multiplikation uden Numpy
- Matrix omvendt
- Matrix transponere
- Matrix til array
Hvordan fungerer matricer i Python?
Vi skriver data i et todimensionelt array for at skabe en matrix. Det gøres som følger:
Eksempel
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Den viser en matrix med 3 rækker og 5 kolonner, så dens dimension er 3×5. Heltalsdatatypeobjekter udgør dataene i denne matrix. Række1, den første række, har værdier (2, 3, 5, 7, 6), mens Række2 har værdier (3, 2, 6, 7, 2) og Række3 har værdierne 5, 7, 2, 6, 1. Vedr. kolonner, Kolonne1 har værdier (2, 3, 5), Kolonne2 har værdier (3, 2, 7) og så videre.
Eksempel
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Den viser en matrix med 3 rækker og 3 kolonner, så dens dimension er 3×3. Sådanne matricer med lige store rækker og kolonner kaldes kvadratiske matricer.
På samme måde giver Python brugere mulighed for at gemme deres data i en m x n dimensionel matrix. Vi kan udføre tilføjelse af matricer, multiplikation, transponering og andre operationer på en matrixlignende struktur.
Implementeringen af et matrixobjekt i Python er ikke ligetil. Vi kan skabe en Python-matrix ved at bruge arrays og på samme måde bruge dem.
NumPy Array
Den videnskabelige computersoftware NumPy understøtter et robust N-dimensionelt array-objekt. Installation af NumPy er en forudsætning for at bruge det i vores program.
NumPy kan bruges og importeres efter installationen. At kende det grundlæggende i Numpy Array vil være nyttigt til at forstå matricer.
java char til streng
Arrays med flere dimensioner af elementer leveres af NumPy. Her er en illustration:
Kode
# 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))
Produktion:
['4' '6' 'Harry'] Data type of array object:
Som vi kan se, hører Numpy-arrays til ndarray-klassen.
Eksempel på oprettelse af en matrix ved hjælp af Numpy Array
Tænk på scenariet, hvor vi opretter en registrering af elevernes karakterer. Vi vil registrere elevens navn og karakterer i to fag, Python-programmering og Matrix. Vi vil skabe en todimensionel matrix ved hjælp af en numpy array og derefter omforme den.
Kode
# 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)
Produktion:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Eksempel på oprettelse af en matrix ved hjælp af Numpy Matrix-metoden
Vi kan bruge numpy.matrix til at skabe en 2D-matrix.
Kode
# 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)
Produktion:
[[3 4] [5 6]]
Adgang til værdier af en matrix
Indekserne for en matrix kan bruges til at få adgang til de elementer, der er gemt i den. Data lagret i en matrix er tilgængelige ved hjælp af den samme tilgang, som vi bruger til en todimensional matrix.
Kode
# 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] )
Produktion:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Metoder til at skabe et 2-D Numpy Array eller en Matrix
Der er flere metoder til at skabe et todimensionelt NumPy-array og dermed en matrix. Giver indgange til rækker og kolonner
Vi kan levere heltal, flydende eller endda komplekse tal. Ved at bruge dtype-attributten for array-metoden kan vi angive den datatype, vi ønsker.
Kode
# 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)
Produktion:
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]]
Array med nuller og enere
Kode
# 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)
Produktion:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Her har vi specificeret dtype til 64 bit.
Brug af metoderne arange() og shape().
Kode
# 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)
Produktion:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Python Matrix Operations
Python Matrix tilføjelse
Vi tilføjer de to matricer og bruger den indlejrede for-løkke gennem de givne matricer.
Kode
# 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)
Produktion:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Python Matrix Multiplikation
Python Matrix Multiplication Operator
I Python er @ kendt som multiplikationsoperatoren. Lad os se et eksempel, hvor vi vil bruge denne operator til at gange to matricer.
Kode
# 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)
Produktion:
netværksarkitektur
[[44 26] [68 42]]
Python Matrix Multiplikation uden at bruge Numpy
En anden måde at multiplicere to matricer på er at bruge indlejrede løkker. Her er et eksempel at vise.
Kode
# 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)
Produktion:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python Matrix Inverse
Når en ligning skal løses for at få værdien af en ukendt variabel, der opfylder ligningerne, beregnes den inverse af en matrix, som blot er den gensidige af matricen, som vi ville i almindelig matematik. En matrixs inverse er den matrix, der giver identitetsmatrixen, når vi multiplicerer med den oprindelige matrix. Kun en ikke-singular matrix kan have en invers. En ikke-singular matrix har en ikke-nul determinant.
Kode
# 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))
Produktion:
[[-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 Transponering
Python Matrix Transpose uden Numpy
En matrix transponering involverer at skifte rækker og kolonner. Den har symbolet X'. Vi vil sætte objektet i række i og kolonne j i matrix X i række j og kolonne i i matrix X'. Følgelig vil X' blive en 4x3 matrix, hvis den oprindelige matrix X er en 3x4 matrix.
Kode
# 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)
Produktion:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Python Matrix Transponering ved hjælp af Numpy
Vi kan bruge matrix.transpose() metoden i Numpy til at få matricens transponering.
Kode
# 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)
Produktion:
[[5 4] [7 2] [6 4]]
Konvertering af Python Matrix til Array
Vi kan bruge ravel- og flatten-funktioner til at konvertere en Python-matrix til en Python-array.
Kode
# 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)
Produktion:
[[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]