In deze tutorial leren we over Python-matrices. In Python lijkt een matrixobject op geneste lijsten, omdat ze multidimensionaal zijn. We zullen zien hoe je een matrix kunt maken met behulp van Numpy-arrays. Hierna zullen we verschillende matrixbewerkingsmethoden en voorbeelden zien voor een beter begrip.
Wat is een matrix in Python?
Een matrix in Python is een rechthoekige Numpy-array. Deze array moet tweedimensionaal zijn. Het bevat gegevens die zijn opgeslagen in de rijen en kolommen van de array. In een Python-matrix wordt naar de horizontale reeks items verwezen als 'rijen', terwijl naar de verticale reeks items wordt verwezen als 'kolommen'. De rijen en kolommen zijn net als een geneste lijst over elkaar gestapeld. Als een matrix r aantal rijen en c aantal kolommen bevat, waarbij r en c positieve gehele getallen zijn, dan bepaalt r x c de volgorde van dit matrixobject.
java converteert geheel getal naar string
We kunnen tekenreeksen, gehele getallen en objecten van andere gegevenstypen in een matrix opslaan. Gegevens worden opgeslagen in de stapels rijen en kolommen in een matrix. De matrix is een cruciale datastructuur voor berekeningen in de wiskunde en natuurwetenschappen. In Python beschouwen we een lijst met lijsten of een geneste lijst als een matrix, omdat Python geen ingebouwd type voor een matrixobject bevat.
In de loop van deze tutorial zullen we de volgende lijst met matrixbewerkingsmethoden doornemen.
- Matrix-toevoeging
- Matrix vermenigvuldiging
- Operator voor matrixvermenigvuldiging
- Matrixvermenigvuldiging zonder Numpy
- Matrix omgekeerd
- Matrix transponeren
- Matrix naar array
Hoe werken matrices in Python?
We schrijven gegevens in een tweedimensionale array om een matrix te creëren. Het wordt als volgt gedaan:
Voorbeeld
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Het geeft een matrix weer met 3 rijen en 5 kolommen, dus de afmeting is 3×5. Objecten van het gegevenstype Integer vormen de gegevens in deze matrix. Rij1, de eerste rij, heeft waarden (2, 3, 5, 7, 6), terwijl Rij2 waarden (3, 2, 6, 7, 2) heeft en Rij3 waarden 5, 7, 2, 6, 1. kolommen, Kolom1 heeft waarden (2, 3, 5), Kolom2 heeft waarden (3, 2, 7), enzovoort.
Voorbeeld
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Het geeft een matrix weer met 3 rijen en 3 kolommen, dus de afmeting is 3×3. Dergelijke matrices met gelijke rijen en kolommen worden vierkante matrices genoemd.
Op dezelfde manier stelt Python gebruikers in staat hun gegevens op te slaan binnen een mxn-dimensionale matrix. We kunnen de optelling van matrices, vermenigvuldiging, transpositie en andere bewerkingen uitvoeren op een matrixachtige structuur.
De implementatie van een matrixobject in Python is niet eenvoudig. We kunnen een Python-matrix maken door arrays te gebruiken en deze op dezelfde manier te gebruiken.
NumPy-array
De wetenschappelijke computersoftware NumPy ondersteunt een robuust N-dimensionaal array-object. Het installeren van NumPy is een voorwaarde om het in ons programma te kunnen gebruiken.
NumPy kan na installatie worden gebruikt en geïmporteerd. Het kennen van de basisprincipes van Numpy Array zal nuttig zijn bij het begrijpen van matrices.
Arrays met meerdere dimensies van items worden geleverd door NumPy. Hier is een illustratie:
Code
# 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))
Uitgang:
['4' '6' 'Harry'] Data type of array object:
Zoals we kunnen zien, behoren Numpy-arrays tot de klasse ndarray.
Voorbeeld om een matrix te maken met Numpy Array
Denk eens aan het scenario waarin we een overzicht maken van de cijfers van studenten. We zullen de naam en cijfers van de student vastleggen in twee vakken, programmeren in Python en Matrix. We zullen een tweedimensionale matrix maken met behulp van een numpy-array en deze vervolgens opnieuw vormgeven.
Code
# 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)
Uitgang:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Voorbeeld om een matrix te maken met behulp van de Numpy Matrix-methode
We kunnen de numpy.matrix gebruiken om een 2D-matrix te maken.
array c-reeks
Code
# 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)
Uitgang:
[[3 4] [5 6]]
Toegang tot waarden van een matrix
De indices van een matrix kunnen worden gebruikt om toegang te krijgen tot de daarin opgeslagen elementen. Gegevens die in een matrix zijn opgeslagen, zijn toegankelijk via dezelfde aanpak die we gebruiken voor een tweedimensionale array.
Code
# 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] )
Uitgang:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Methoden om een 2D Numpy-array of een matrix te maken
Er zijn verschillende methoden om een tweedimensionale NumPy-array en dus een matrix te maken. Het verstrekken van vermeldingen voor de rijen en kolommen
We kunnen gehele getallen, floats of zelfs complexe getallen leveren. Met behulp van het dtype-attribuut van de array-methode kunnen we het gewenste gegevenstype specificeren.
Code
# 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)
Uitgang:
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 met nullen en enen
Code
# 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)
Uitgang:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Hier hebben we dtype gespecificeerd tot 64 bits.
De methoden arange() en shape() gebruiken
Code
# 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)
Uitgang:
knop om css te centreren
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Python-matrixbewerkingen
Python-matrixtoevoeging
We voegen de twee matrices toe en gebruiken de geneste for-lus door de gegeven matrices.
Code
# 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)
Uitgang:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Python-matrixvermenigvuldiging
Operator voor Python-matrixvermenigvuldiging
In Python staat @ bekend als de vermenigvuldigingsoperator. Laten we een voorbeeld bekijken waarin we deze operator gebruiken om twee matrices te vermenigvuldigen.
Code
# 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)
Uitgang:
[[44 26] [68 42]]
Python-matrixvermenigvuldiging zonder Numpy te gebruiken
Een andere manier om twee matrices te vermenigvuldigen is het gebruik van geneste lussen. Hier is een voorbeeld om te laten zien.
Code
# 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)
Uitgang:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python-matrix omgekeerd
Wanneer een vergelijking moet worden opgelost om de waarde te verkrijgen van een onbekende variabele die aan de vergelijkingen voldoet, wordt de inverse van een matrix berekend, die precies het omgekeerde is van de matrix, zoals we dat in de reguliere wiskunde zouden doen. De inverse van een matrix is de matrix die de identiteitsmatrix oplevert als we vermenigvuldigen met de oorspronkelijke matrix. Alleen een niet-singuliere matrix kan een inverse hebben. Een niet-singuliere matrix heeft een determinant die niet nul is.
Code
# 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))
Uitgang:
[[-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-matrixtransponering
Python Matrix Transponeren zonder Numpy
Bij de transpositie van een matrix worden de rijen en kolommen verwisseld. Het heeft het symbool X'. We plaatsen het object in rij i en kolom j van matrix X in rij j en kolom i van matrix X'. Bijgevolg zal X' een 4x3-matrix worden als de oorspronkelijke matrix X een 3x4-matrix is.
np punt
Code
# 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)
Uitgang:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Python Matrix Transponeren met Numpy
We kunnen de methode matrix.transpose() in Numpy gebruiken om de transpositie van de matrix te verkrijgen.
Code
# 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)
Uitgang:
[[5 4] [7 2] [6 4]]
Python-matrix naar array converteren
We kunnen ravel- en flatten-functies gebruiken om een Python-matrix naar een Python-array te converteren.
Code
# 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)
Uitgang:
[[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]