Ebben az oktatóanyagban a Python mátrixokról fogunk tanulni. A Pythonban a mátrix objektumok hasonlóak a beágyazott listákhoz, mivel többdimenziósak. Meglátjuk, hogyan lehet mátrixot létrehozni Numpy tömbök segítségével. Ezt követően különféle mátrixműveleti módszereket és példákat fogunk látni a jobb megértés érdekében.
Mi az a mátrix a Pythonban?
A Python mátrixa egy téglalap alakú Numpy tömb. Ennek a tömbnek kétdimenziósnak kell lennie. A tömb soraiban és oszlopaiban tárolt adatokat tartalmazza. A Python-mátrixban az elemek vízszintes sorozatait „soroknak”, míg a függőleges elemek sorozatokat „oszlopoknak” nevezzük. A sorok és oszlopok egymásra vannak rakva, mint egy beágyazott lista. Ha egy mátrix r számú sort és c számú oszlopot tartalmaz, ahol r és c pozitív egész számok, akkor r x c határozza meg ennek a mátrixobjektumnak a sorrendjét.
Egy mátrixban tárolhatunk karakterláncokat, egész számokat és más adattípusú objektumokat. Az adatok egy mátrix soraiban és oszlopaiban tárolódnak. A mátrix kulcsfontosságú adatstruktúra a matematikai és természettudományi számításokhoz. A Pythonban a listák listáját vagy a beágyazott listákat mátrixnak tekintjük, mivel a Python nem tartalmaz beépített típust a mátrixobjektumokhoz.
Ennek az oktatóanyagnak a során a mátrixműveleti módszerek alábbi listáját tekintjük át.
- Mátrix összeadás
- Mátrixszorzás
- Mátrixszorzó operátor
- Mátrixszorzás Numpy nélkül
- Mátrix inverz
- Mátrix transzponálás
- Mátrixból tömbbe
Hogyan működnek a mátrixok a Pythonban?
Az adatokat kétdimenziós tömbbe írjuk, hogy mátrixot hozzunk létre. Ez a következőképpen történik:
Példa
legszebb mosoly
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Egy 3 sorból és 5 oszlopból álló mátrixot jelenít meg, tehát a mérete 3×5. Egész számú adattípusú objektumok alkotják az adatokat ebben a mátrixban. Az 1. sor, az első sor értékei (2, 3, 5, 7, 6), míg a 2. soré (3, 2, 6, 7, 2), a 3. sorban pedig 5, 7, 2, 6, 1. oszlopok, az 1. oszlop értékei (2, 3, 5), a 2. oszlop értékei (3, 2, 7), és így tovább.
Példa
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Egy 3 sorból és 3 oszlopból álló mátrixot jelenít meg, tehát a mérete 3×3. Az ilyen, egyenlő sorokkal és oszlopokkal rendelkező mátrixokat négyzetmátrixoknak nevezzük.
Hasonlóképpen, a Python lehetővé teszi a felhasználók számára, hogy adataikat egy m x n dimenziós mátrixon belül tárolják. Egy mátrixszerű szerkezeten végezhetünk mátrixok összeadását, szorzást, transzponálást és egyéb műveleteket.
Egy mátrix objektum megvalósítása Pythonban nem egyszerű. Készíthetünk Python mátrixot tömbök használatával, és hasonlóképpen használhatjuk őket.
NumPy Array
A NumPy tudományos számítástechnikai szoftver egy robusztus N-dimenziós tömbobjektumot támogat. A NumPy telepítése előfeltétele a programunkban való használatának.
A NumPy a telepítés után használható és importálható. A Numpy Array alapjainak ismerete hasznos lesz a mátrixok megértésében.
Az elemek több dimenzióját tartalmazó tömböket a NumPy biztosítja. Íme egy illusztráció:
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))
Kimenet:
['4' '6' 'Harry'] Data type of array object:
Amint látjuk, a Numpy tömbök az ndarray osztályba tartoznak.
Példa mátrix létrehozására Numpy Array használatával
Gondoljon arra a forgatókönyvre, amikor rögzítjük a tanulók jegyeit. Két tantárgyból, a Python programozásból és a Mátrixból rögzítjük a tanuló nevét és jegyeit. Kétdimenziós mátrixot fogunk létrehozni egy numpy tömb segítségével, majd átformáljuk.
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)
Kimenet:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Példa mátrix létrehozására Numpy Matrix módszerrel
A numpy.mátrix segítségével 2D mátrixot készíthetünk.
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)
Kimenet:
[[3 4] [5 6]]
Mátrix értékeinek elérése
Egy mátrix indexei segítségével hozzáférhetünk a benne tárolt elemekhez. A mátrixban tárolt adatok ugyanazzal a megközelítéssel érhetők el, mint a kétdimenziós tömbök esetében.
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] )
Kimenet:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Módszerek 2-D Numpy Array vagy mátrix létrehozására
Számos módszer létezik a kétdimenziós NumPy tömb és így a mátrix létrehozására. Bejegyzések biztosítása a sorokhoz és oszlopokhoz
Adhatunk egész számokat, lebegőpontokat vagy akár komplex számokat is. A tömb metódus dtype attribútuma segítségével megadhatjuk a kívánt adattípust.
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)
Kimenet:
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]]
Nullákat és egyeseket tartalmazó tömb
Kód
string.formátum
# 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)
Kimenet:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Itt a dtype-ot 64 bitesre határoztuk meg.
Az arange() és shape() metódusok használata
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)
Kimenet:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Python mátrixműveletek
Python mátrix kiegészítés
Összeadjuk a két mátrixot, és a beágyazott for ciklust használjuk a megadott mátrixokon keresztül.
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)
Kimenet:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Python mátrixszorzás
Python mátrixszorzó operátor
A Pythonban a @ szorzóoperátorként ismert. Lássunk egy példát, ahol ezt az operátort fogjuk használni két mátrix szorzására.
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)
Kimenet:
[[44 26] [68 42]]
Python mátrixszorzás a Numpy használata nélkül
Két mátrix szorzásának másik módja a beágyazott hurkok használata. Itt van egy példa a bemutatásra.
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)
Kimenet:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python Mátrix Inverz
Amikor egy egyenletet meg kell oldani, hogy megkapjuk egy ismeretlen változó értékét, amely kielégíti az egyenleteket, egy mátrix inverzét számítjuk ki, amely csak a mátrix reciprokja, ahogyan azt a reguláris matematikában tennénk. A mátrix inverze az a mátrix, amely megadja az azonosságmátrixot, ha az eredeti mátrixszal szorozunk. Csak egy nem szinguláris mátrixnak lehet inverze. A nem szinguláris mátrixnak van egy nem nulla determinánsa.
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))
Kimenet:
integer összehasonlítás Java-val
[[-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 mátrix transzponálás
Python mátrix transzponálás Numpy nélkül
A mátrix transzponálása magában foglalja a sorok és oszlopok váltását. X' szimbólum van rajta. Az objektumot az X mátrix i sorába, a j oszlopát pedig az X' mátrix j sorába és i oszlopába helyezzük. Következésképpen X' 4x3-as mátrixsá válik, ha az eredeti X mátrix 3x4-es mátrix.
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)
Kimenet:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Python mátrix transzponálása a Numpy segítségével
A Numpy-ban a matrix.transpose() metódus segítségével megkaphatjuk a mátrix transzponálását.
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)
Kimenet:
[[5 4] [7 2] [6 4]]
Python Matrix konvertálása tömbbe
A ravel és flatten függvények segítségével Python mátrixot Python tömbbé konvertálhatunk.
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)
Kimenet:
[[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]