Algebra Lineare di Base con NumPy
L'algebra lineare è un ramo fondamentale della matematica che svolge un ruolo cruciale in vari campi, tra cui il machine learning, il deep learning e l'analisi dei dati.
Vettori e Matrici
Nell'algebra lineare, un vettore è un insieme ordinato di valori. Gli array 1D di NumPy possono rappresentare efficacemente i vettori. Una matrice è un array bidimensionale di numeri, che può essere rappresentato da un array 2D in NumPy.
Abbiamo già trattato l'addizione e la sottrazione di vettori e matrici, così come la moltiplicazione scalare, nel capitolo "Operazioni Matematiche di Base". Qui ci concentreremo su altre operazioni.
Trasposizione
La trasposizione è un'operazione che capovolge una matrice sulla sua diagonale. In altre parole, converte le righe della matrice in colonne e le colonne in righe.
Puoi trasporre una matrice usando l'attributo .T
di un array NumPy:
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Prodotto Scalare
Il prodotto scalare è forse l'operazione di algebra lineare più comunemente utilizzata nell'apprendimento automatico e profondo. Il prodotto scalare di due vettori (che devono avere un numero uguale di elementi) è la somma dei loro prodotti elemento per elemento. Il risultato è uno scalare:
Moltiplicazione di Matrici
La moltiplicazione di matrici è definita solo se il numero di colonne nella prima matrice è uguale al numero di righe nella seconda matrice. La matrice risultante avrà lo stesso numero di righe della prima matrice e lo stesso numero di colonne della seconda matrice.
Come puoi vedere, ogni elemento della matrice risultante è il prodotto scalare di due vettori. Il numero di riga dell'elemento corrisponde al numero del vettore riga nella prima matrice, e il numero di colonna corrisponde al numero del vettore colonna nella seconda matrice.
Il numero di colonne nella prima matrice deve essere uguale al numero di righe nella seconda matrice, poiché il prodotto scalare richiede che i due vettori abbiano lo stesso numero di elementi.
Prodotto Scalare e Moltiplicazione di Matrici in NumPy
NumPy fornisce la funzione dot()
sia per il prodotto scalare che per la moltiplicazione di matrici. Questa funzione prende due array come argomenti.
Tuttavia, puoi anche usare l'operatore @
tra due array per ottenere gli stessi risultati.
import numpy as np vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Dot product using the dot() function print(np.dot(vector_1, vector_2)) # Dot product using the @ operator print(vector_1 @ vector_2) matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 10], [8, 11], [9, 12]]) # Matrix multiplication using the dot() function print(np.dot(matrix_1, matrix_2)) # Matrix multiplication using the @ operator print(matrix_1 @ matrix_2)
Se l'argomento destro nella moltiplicazione di matrici è un vettore (array 1D), NumPy lo tratta come una matrice dove l'ultima dimensione è 1. Ad esempio, quando si moltiplica una matrice 6x4
per un vettore con 4
elementi, il vettore è considerato una matrice 4x1
.
Se l'argomento sinistro nella moltiplicazione di matrici è un vettore, NumPy lo tratta come una matrice dove la prima dimensione è 1. Ad esempio, quando si moltiplica un vettore con 4
elementi per una matrice 4x6
, il vettore è trattato come una matrice 1x4
.
L'immagine sotto mostra la struttura degli array exam_scores
e coefficients
utilizzati nel compito:
Swipe to start coding
Stai lavorando con l'array exam_scores
, che contiene i punteggi simulati degli esami di tre studenti (ogni riga rappresenta uno studente) in tre materie (ogni colonna rappresenta una materia).
-
Moltiplica i punteggi di ciascun esame per il rispettivo coefficiente.
-
Somma i punteggi risultanti per ciascuno studente per calcolare il loro punteggio finale.
-
Calcola il prodotto scalare tra
exam_scores
ecoefficients
.
Questo ti darà i punteggi finali per tutti gli studenti basati sui contributi ponderati dei loro punteggi nelle materie.
Soluzione
Grazie per i tuoi commenti!