0Pricing
Python Academy · Lezione

Algebra lineare con NumPy

Esegua moltiplicazioni tra matrici, decomposizioni e risolva sistemi lineari.

Algebra lineare con NumPy è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

np.dot e @

Per la moltiplicazione matriciale, utilizzi np.dot(A, B) oppure l'operatore @ (Python 3.5+).

import numpy as np

A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])

print(A @ B)
# [[19 22]
#  [43 50]]
print(np.dot(A, B))   # same result

Moltiplicazione elemento per elemento e matriciale

* esegue una moltiplicazione elemento per elemento (prodotto di Hadamard). @ esegue una moltiplicazione matriciale. Non li confonda mai.

import numpy as np

A = np.array([[1,2],[3,4]])
B = np.array([[2,0],[1,3]])

print(A * B)    # [[ 2  0] [ 3 12]] — element-wise
print(A @ B)    # [[ 4  6] [10 12]] — matrix multiply

Trasposizione

arr.T trasponde l'array (scambia righe e colonne). Per dimensioni superiori, utilizzi np.transpose(arr, axes).

import numpy as np

A = np.array([[1,2,3],[4,5,6]])
print(A.shape)    # (2, 3)
print(A.T.shape)  # (3, 2)
print(A.T)

np.linalg.inv e np.linalg.det

Calcoli l'inversa e il determinante di una matrice.

import numpy as np

A = np.array([[2.,1.],[1.,3.]])
print(np.linalg.inv(A))
# [[ 0.6 -0.2]
#  [-0.2  0.4]]
print(np.linalg.det(A))   # 5.0

Risoluzione di sistemi lineari

np.linalg.solve(A, b) risolve Ax = b in modo efficiente usando la decomposizione LU.

import numpy as np

# Solve: 2x + y = 5; x + 3y = 10
A = np.array([[2.,1.],[1.,3.]])
b = np.array([5.,10.])
x = np.linalg.solve(A, b)
print(x)   # [1.  3.]   → x=1, y=3

Autovalori e autovettori

np.linalg.eig(A) restituisce autovalori e autovettori. Utilizzi np.linalg.eigh per le matrici simmetriche (è più veloce e più stabile).

import numpy as np

A = np.array([[4., 2.], [1., 3.]])
vals, vecs = np.linalg.eig(A)
print("Eigenvalues:", vals)    # [5.  2.]
print("Eigenvectors:\n", vecs)

SVD: decomposizione ai valori singolari

np.linalg.svd(A) scompone A in U, Sigma e Vt. Viene utilizzata per la riduzione della dimensionalità (PCA) e per le pseudoinverse.

import numpy as np

A = np.array([[1,2],[3,4],[5,6]], dtype=float)
U, s, Vt = np.linalg.svd(A, full_matrices=False)
print("Singular values:", s)
# Reconstruct: U @ np.diag(s) @ Vt ≈ A

np.linalg.norm

Calcoli le norme di vettori e matrici.

import numpy as np

v = np.array([3., 4.])
print(np.linalg.norm(v))           # 5.0  (Euclidean)
print(np.linalg.norm(v, ord=1))    # 7.0  (Manhattan)

A = np.eye(3)
print(np.linalg.norm(A, "fro"))    # 1.732 (Frobenius)

Prodotti vettoriale ed esterno

np.cross(a, b) calcola il prodotto vettoriale in 3D. np.outer(a, b) calcola il prodotto esterno.

import numpy as np

a = np.array([1,0,0])
b = np.array([0,1,0])
print(np.cross(a, b))   # [0 0 1]

print(np.outer([1,2,3], [4,5]))
# [[ 4  5]
#  [ 8 10]
#  [12 15]]

np.linalg.lstsq

Soluzione ai minimi quadrati per sistemi sovradeterminati (con più equazioni che incognite).

import numpy as np

# Fit y = ax + b  to noisy data
X = np.column_stack([np.arange(5), np.ones(5)])
y = np.array([1.1, 2.0, 3.1, 3.9, 5.2])

coeffs, _, _, _ = np.linalg.lstsq(X, y, rcond=None)
print(f"slope={coeffs[0]:.2f}, intercept={coeffs[1]:.2f}")

np.einsum

np.einsum esprime qualsiasi contrazione di tensori usando la notazione di sommatoria di Einstein: è estremamente flessibile per l'algebra lineare complessa.

import numpy as np

A = np.random.rand(3, 4)
B = np.random.rand(4, 5)

# Matrix multiplication via einsum:
C = np.einsum("ij,jk->ik", A, B)
print(C.shape)   # (3, 5)

# Trace:
M = np.eye(4)
print(np.einsum("ii->", M))   # 4.0

Verifica rapida

Quale operatore esegue la moltiplicazione matriciale in NumPy (Python 3.5+)?

Riepilogo

Utilizzi @ per la moltiplicazione matriciale, np.linalg.solve per i sistemi lineari, np.linalg.eig per gli autovalori e np.linalg.svd per la decomposizione. np.einsum gestisce contrazioni arbitrarie di tensori.

Domande Frequenti

La lezione «Algebra lineare con NumPy» è gratuita?

Sì — il testo completo di «Algebra lineare con NumPy» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «Algebra lineare con NumPy»?

Esegua moltiplicazioni tra matrici, decomposizioni e risolva sistemi lineari. Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Algebra lineare con NumPy»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Array NumPy e dtype
  2. Operazioni sugli array e broadcasting
  3. Indicizzazione, slicing e indicizzazione avanzata
  4. Algebra lineare con NumPy
← Torna a Python Academy