V tomto tutoriálu se seznámíme s maticemi Pythonu. V Pythonu je maticový objekt podobný vnořeným seznamům, protože jsou vícerozměrné. Uvidíme, jak vytvořit matici pomocí Numpy polí. Poté uvidíme různé metody maticových operací a příklady pro lepší pochopení.
Co je matice v Pythonu?
Matice v Pythonu je obdélníkové pole Numpy. Toto pole musí být dvourozměrné. Obsahuje data uložená v řádcích a sloupcích pole. V matici Pythonu jsou horizontální řady položek označovány jako „řádky“, zatímco vertikální řady položek jsou označovány jako „sloupce“. Řádky a sloupce jsou naskládány přes sebe stejně jako vnořený seznam. Pokud matice obsahuje r počet řádků a c počet sloupců, kde r a c jsou kladná celá čísla, pak r x c určuje pořadí tohoto maticového objektu.
V matici můžeme ukládat řetězce, celá čísla a objekty jiných datových typů. Data jsou uložena v hromadách řádků a sloupců v matici. Matice je klíčovou datovou strukturou pro výpočty v matematice a přírodních vědách. V Pythonu považujeme seznam seznamů nebo vnořený seznam za matici, protože Python neobsahuje žádný vestavěný typ pro objekt matice.
V průběhu tohoto tutoriálu si projdeme následující seznam metod maticových operací.
- Přidání matice
- Maticové násobení
- Operátor maticového násobení
- Maticové násobení bez Numpyho
- Inverzní matice
- Maticová transpozice
- Matice do pole
Jak fungují matice v Pythonu?
Data zapisujeme do dvourozměrného pole, abychom vytvořili matici. Provádí se následovně:
Příklad
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Zobrazuje matici, která má 3 řádky a 5 sloupců, takže její rozměr je 3×5. Celočíselné objekty datového typu tvoří data v této matici. Row1, první řádek, má hodnoty (2, 3, 5, 7, 6), zatímco Row2 má hodnoty (3, 2, 6, 7, 2) a Row3 má hodnoty 5, 7, 2, 6, 1. sloupce, Sloupec1 má hodnoty (2, 3, 5), Sloupec2 má hodnoty (3, 2, 7) a tak dále.
Příklad
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Zobrazuje matici, která má 3 řádky a 3 sloupce, takže její rozměr je 3×3. Takové matice, které mají stejné řádky a sloupce, se nazývají čtvercové matice.
Podobně Python umožňuje uživatelům ukládat svá data v matici rozměrů m x n. Na matici podobné struktuře můžeme provádět sčítání matic, násobení, transpozici a další operace.
Implementace maticového objektu v Pythonu není přímočará. Můžeme vytvořit matici Pythonu pomocí polí a podobně je použít.
zásobník v Javě
NumPy Array
Vědecký výpočetní software NumPy podporuje robustní objekt N-dimenzionálního pole. Instalace NumPy je předpokladem pro použití v našem programu.
NumPy lze použít a importovat po instalaci. Znalost základů Numpy Array vám pomůže pochopit matice.
Pole s více rozměry položek poskytuje NumPy. Zde je ilustrace:
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ýstup:
['4' '6' 'Harry'] Data type of array object:
Jak vidíme, pole Numpy patří do třídy ndarray.
Příklad vytvoření matice pomocí Numpy Array
Zamyslete se nad scénářem, kdy vytvoříme záznam známek žáků. Zaznamenáme jméno a známky žáka ve dvou předmětech, programování v Pythonu a Matrix. Vytvoříme dvourozměrnou matici pomocí numpy pole a poté ji přetvoří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ýstup:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Příklad vytvoření matice pomocí metody Numpy Matrix
K vytvoření 2D matice můžeme použít numpy.matrix.
výjimka java throw
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ýstup:
[[3 4] [5 6]]
Přístup k hodnotám matice
Indexy matice lze použít pro přístup k prvkům v ní uloženým. Data uložená v matici jsou přístupná pomocí stejného přístupu, jaký používáme pro dvourozměrné 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ýstup:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Metody pro vytvoření 2-D Numpy Array nebo matice
Existuje několik metod, jak vytvořit dvourozměrné pole NumPy a tedy matici. Poskytování záznamů pro řádky a sloupce
Můžeme poskytnout celá čísla, plovoucí čísla nebo dokonce komplexní čísla. Pomocí atributu dtype metody pole můžeme zadat požadovaný datový typ.
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ýstup:
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 jedničkami
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ýstup:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Zde jsme zadali dtype na 64 bitů.
Použití metod 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ýstup:
řetězec v int
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Operace Python Matrix
Přidání matice Pythonu
Sečteme obě matice a použijeme vnořenou smyčku for skrz 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ýstup:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Maticové násobení v Pythonu
Operátor násobení matice v Pythonu
V Pythonu je @ známý jako operátor násobení. Ukažme si příklad, kdy tento operátor použijeme k vynásobení dvou matic.
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ýstup:
[[44 26] [68 42]]
Python Matrix Multiplication bez použití Numpy
Dalším způsobem násobení dvou matic je použití vnořených smyček. Zde je příklad na ukázku.
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ýstup:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python Matrix Inverse
Když je třeba vyřešit rovnici, abychom dostali hodnotu neznámé proměnné, která rovnicím vyhovuje, vypočítá se inverzní hodnota matice, která je pouze převrácenou hodnotou matice, jak bychom to dělali v běžné matematice. Inverzní matice je matice, která dává matici identity, když násobíme původní maticí. Inverzní může mít pouze nesingulární matice. Nesingulární matice 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ýstup:
[[-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
Transpozice matice zahrnuje přepínání řádků a sloupců. Má symbol X'. Objekt dáme do řádku i a sloupce j matice X do řádku j a sloupce i matice X'. V důsledku toho se X' stane maticí 4x3, pokud původní matice X je matice 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ýstup:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Python Matrix Transpose pomocí Numpy
K získání transpozice matice můžeme použít metodu matrix.transpose() v Numpy.
Verilog vždy
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ýstup:
[[5 4] [7 2] [6 4]]
Převod Python Matrix na Array
Můžeme použít funkce ravel a flatten k převodu matice Pythonu na pole Python.
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ýstup:
[[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]