In questo tutorial impareremo a conoscere le matrici Python. In Python, un oggetto matrice è simile agli elenchi annidati poiché sono multidimensionali. Vedremo come creare una matrice utilizzando gli array Numpy. Successivamente, vedremo vari metodi ed esempi di operazioni con matrici per una migliore comprensione.
Cos'è una matrice in Python?
Una matrice in Python è un array Numpy rettangolare. Questo array deve essere bidimensionale. Contiene i dati memorizzati nelle righe e nelle colonne dell'array. In una matrice Python, le serie orizzontali di elementi sono chiamate 'righe', mentre le serie verticali di elementi sono chiamate 'colonne'. Le righe e le colonne sono impilate una sull'altra proprio come un elenco nidificato. Se una matrice contiene r numero di righe e c numero di colonne, dove r e c sono numeri interi positivi, allora r x c determina l'ordine di questo oggetto matrice.
Possiamo memorizzare stringhe, numeri interi e oggetti di altri tipi di dati in una matrice. I dati vengono archiviati in pile di righe e colonne in una matrice. La matrice è una struttura dati cruciale per i calcoli in matematica e scienze. In Python, consideriamo un elenco di elenchi o un elenco annidato come una matrice poiché Python non include alcun tipo integrato per un oggetto matrice.
Nel corso di questo tutorial, esamineremo il seguente elenco di metodi di funzionamento della matrice.
- Addizione di matrici
- Moltiplicazione di matrici
- Operatore di moltiplicazione di matrici
- Moltiplicazione di matrici senza Numpy
- Matrice inversa
- Trasposizione della matrice
- Matrice in array
Come funzionano le matrici in Python?
Scriviamo i dati in un array bidimensionale per creare una matrice. Viene fatto come segue:
Automi finiti deterministici
Esempio
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
Visualizza una matrice con 3 righe e 5 colonne, quindi la sua dimensione è 3×5. Gli oggetti di tipo dati interi costituiscono i dati in questa matrice. Riga1, la prima riga, ha valori (2, 3, 5, 7, 6), mentre Riga2 ha valori (3, 2, 6, 7, 2) e Riga3 ha valori 5, 7, 2, 6, 1. Per quanto riguarda colonne, Colonna1 ha valori (2, 3, 5), Colonna2 ha valori (3, 2, 7) e così via.
Esempio
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
Visualizza una matrice con 3 righe e 3 colonne, quindi la sua dimensione è 3×3. Tali matrici aventi righe e colonne uguali sono chiamate matrici quadrate.
Allo stesso modo, Python consente agli utenti di archiviare i propri dati all'interno di una matrice m x n dimensionale. Possiamo eseguire l'addizione di matrici, la moltiplicazione, la trasposizione e altre operazioni su una struttura simile a una matrice.
L'implementazione di un oggetto matrice in Python non è semplice. Possiamo creare una matrice Python utilizzando gli array e usarli in modo simile.
Array NumPy
Il software di calcolo scientifico NumPy supporta un robusto oggetto array N-dimensionale. L'installazione di NumPy è un prerequisito per utilizzarlo nel nostro programma.
NumPy può essere utilizzato e importato dopo l'installazione. Conoscere le basi di Numpy Array sarà utile per comprendere le matrici.
Gli array con più dimensioni di elementi sono forniti da NumPy. Ecco un'illustrazione:
Codice
# 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))
Produzione:
['4' '6' 'Harry'] Data type of array object:
Come possiamo vedere, gli array Numpy appartengono alla classe ndarray.
Esempio per creare una matrice utilizzando Numpy Array
Pensa allo scenario in cui creiamo un registro dei voti degli studenti. Registreremo il nome e i voti dello studente in due materie, programmazione Python e Matrix. Creeremo una matrice bidimensionale utilizzando un array Numpy e quindi la rimodelleremo.
Codice
# 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)
Produzione:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Esempio per creare una matrice utilizzando il metodo della matrice Numpy
Possiamo usare numpy.matrix per creare una matrice 2D.
Codice
# 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)
Produzione:
[[3 4] [5 6]]
Accesso ai valori di una matrice
Gli indici di una matrice possono essere utilizzati per accedere agli elementi in essa memorizzati. I dati memorizzati in una matrice sono accessibili utilizzando lo stesso approccio che utilizziamo per un array bidimensionale.
Codice
# 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] )
Produzione:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
Metodi per creare un array Numpy 2D o una matrice
Esistono diversi metodi per creare un array NumPy bidimensionale e quindi una matrice. Fornire voci per righe e colonne
Possiamo fornire numeri interi, in virgola mobile o anche numeri complessi. Utilizzando l'attributo dtype del metodo array, possiamo specificare il tipo di dati che desideriamo.
Codice
# 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)
Produzione:
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]]
Matrice con zeri e uno
Codice
# 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)
Produzione:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Qui abbiamo specificato dtype a 64 bit.
Utilizzando i metodi arange() e shape()
Codice
# 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)
Produzione:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Operazioni su matrici Python
Aggiunta di matrici Python
Aggiungeremo le due matrici e utilizzeremo il ciclo for nidificato attraverso le matrici fornite.
Codice
# 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)
Produzione:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Moltiplicazione di matrici Python
Operatore di moltiplicazione di matrici Python
In Python @ è noto come operatore di moltiplicazione. Vediamo un esempio in cui utilizzeremo questo operatore per moltiplicare due matrici.
Codice
# 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)
Produzione:
cos'è un hashset in Java
[[44 26] [68 42]]
Moltiplicazione di matrici Python senza usare Numpy
Un altro modo per moltiplicare due matrici è utilizzare i cicli annidati. Ecco un esempio da mostrare.
Codice
# 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)
Produzione:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Matrice Python inversa
Quando è necessario risolvere un'equazione per ottenere il valore di una variabile sconosciuta che soddisfa le equazioni, viene calcolato l'inverso di una matrice, che è proprio il reciproco della matrice come faremmo nella matematica normale. L'inverso di una matrice è la matrice che dà la matrice identità quando moltiplichiamo con la matrice originale. Solo una matrice non singolare può avere un'inversa. Una matrice non singolare ha un determinante diverso da zero.
Codice
# 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))
Produzione:
[[-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]]
Trasposizione della matrice Python
Trasposizione della matrice Python senza Numpy
La trasposizione di una matrice comporta lo scambio di righe e colonne. Ha il simbolo X'. Metteremo l'oggetto nella riga i e nella colonna j della matrice X nella riga j e nella colonna i della matrice X'. Di conseguenza, X' diventerà una matrice 4x3 se la matrice originale X è una matrice 3x4.
Codice
# 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)
Produzione:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Trasposizione della matrice Python utilizzando Numpy
Possiamo usare il metodo Matrix.transpose() in Numpy per ottenere la trasposizione della matrice.
Codice
# 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)
Produzione:
[[5 4] [7 2] [6 4]]
Conversione della matrice Python in array
Possiamo usare le funzioni ravel e flatten per convertire una matrice Python in un array Python.
Codice
# 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)
Produzione:
[[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]