NumPy: la libreria Python per il Calcolo Numerico

In questo nostro secondo articolo dedicato alle principali librerie di Python vedremo NumPy, la libreria fodnamentale per il calcolo numerico. Se ti sei perso il primo articolo di Pandas puoi recuperarlo qui.

Cos'è NumPy?

NumPy, abbreviazione di “Numerical Python“, è una delle librerie fondamentali e più utilizzate per il calcolo scientifico e numerico in Python. Grazie alla sua capacità di gestire array multidimensionali e matrici, e alla vasta collezione di funzioni matematiche, NumPy è essenziale per gli analisti di dati, scienziati e ingegneri che lavorano con Python.

Creazione e Manipolazione di Array

Gli array sono la struttura dati principale di NumPy. Sono simili alle liste Python, ma offrono maggiore efficienza e funzionalità, specialmente per operazioni matematiche. Creare un array NumPy è semplice e può essere fatto a partire da una lista Python:

    
     import numpy as np

# Creazione di un array da una lista di numeri
array_da_lista = np.array([1, 2, 3, 4, 5])
print("Array da lista:", array_da_lista)

# Creazione di un array bidimensionale (matrice) da una lista di liste
matrice = np.array([[1, 2, 3], [4, 5, 6]])
print("Matrice:\n", matrice)

    
   

Output:

    
     Array da lista: [1 2 3 4 5]
Matrice:
 [[1 2 3]
  [4 5 6]]

    
   

In questo esempio, np.array è utilizzato per creare un array unidimensionale (1D) da una lista semplice e una matrice bidimensionale (2D) da una lista di liste. Gli array NumPy offrono molti vantaggi rispetto alle liste Python, inclusa la possibilità di eseguire operazioni vettoriali e matriciali in modo efficiente.

Proprietà degli Array

    
     # Dimensione dell'array (1D, 2D, ecc.)
print("Dimensione:", array_da_lista.ndim)

# Forma dell'array (numero di righe e colonne)
print("Forma:", matrice.shape)

# Tipo di dato degli elementi (ad esempio, int64, float64, ecc.)
print("Tipo di dato:", array_da_lista.dtype)

    
   
    
     Dimensione: 1
Forma: (2, 3)
Tipo di dato: int64

    
   

Operazioni Aritmetiche

NumPy consente di eseguire operazioni aritmetiche sugli array in modo element-wise, cioè operando su ciascun elemento singolarmente. Questo rende le operazioni matematiche molto efficienti e semplici da eseguire:

    
     a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# Addizione elemento per elemento
somma = a + b
print("Somma:", somma)

# Sottrazione elemento per elemento
sottrazione = a - b
print("Sottrazione:", sottrazione)

# Moltiplicazione elemento per elemento
moltiplicazione = a * b
print("Moltiplicazione:", moltiplicazione)

# Divisione elemento per elemento
divisione = a / b
print("Divisione:", divisione)

    
   
    
     Somma: [5 7 9]
Sottrazione: [-3 -3 -3]
Moltiplicazione: [ 4 10 18]
Divisione: [0.25 0.4  0.5 ]
    
   

In questo esempio, vengono eseguite operazioni di addizione, sottrazione, moltiplicazione e divisione tra due array. NumPy gestisce automaticamente l’operazione su ciascun elemento corrispondente degli array, rendendo il codice più pulito e leggibile.

Funzioni Statistiche e Matematiche

NumPy include molte funzioni matematiche e statistiche predefinite che sono estremamente utili per l’analisi dei dati. Ecco alcuni esempi:

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

# Somma di tutti gli elementi dell'array
somma = np.sum(array)
print("Somma degli elementi:", somma)

# Media di tutti gli elementi dell'array
media = np.mean(array)
print("Media degli elementi:", media)

# Deviazione standard degli elementi dell'array
dev_standard = np.std(array)
print("Deviazione standard:", dev_standard)

# Creazione di un array di numeri casuali tra 0 e 1 di dimensione 3x3
array_casuale = np.random.rand(3, 3)
print("Array casuale:\n", array_casuale)

    
   
    
     Somma degli elementi: 55
Media degli elementi: 5.5
Deviazione standard: 2.8722813232690143
Array casuale:
 [[0.14667009 0.8034396  0.62686802]
  [0.34085895 0.36940149 0.16917032]
  [0.49292353 0.87056779 0.11658556]]

    
   
  • np.sum(): calcola la somma di tutti gli elementi dell’array.
  • np.mean(): calcola la media degli elementi dell’array.
  • np.std(): calcola la deviazione standard degli elementi dell’array.
  • np.random.rand(): genera un array di numeri casuali tra 0 e 1 di dimensione specificata (in questo caso, 3×3).

Indicizzazione e Slicing

L’indicizzazione e il slicing degli array NumPy sono potenti strumenti che permettono di accedere e manipolare porzioni di array con facilità. Ecco un esempio:

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

# Accesso a un elemento specifico: riga 2, colonna 3
elemento = matrice[1, 2]
print("Elemento (1, 2):", elemento)

# Slicing per ottenere una submatrice: prime due righe, colonne 2 e 3
submatrice = matrice[0:2, 1:3]
print("Submatrice:\n", submatrice)
    
   
    
     Elemento (1, 2): 6
Submatrice:
 [[2 3]
  [5 6]]
    
   
  • Accesso a un elemento: matrice[1, 2] accede all’elemento nella seconda riga e terza colonna (nota che l’indicizzazione inizia da 0).
  • Slicing: matrice[0:2, 1:3] estrae una submatrice dalle prime due righe e dalle colonne 2 e 3.

Conclusioni

NumPy è una libreria potente e versatile per il calcolo numerico in Python. La sua efficienza e le sue funzionalità avanzate la rendono uno strumento indispensabile per chiunque lavori con dati numerici. Questo articolo ha presentato una panoramica delle capacità di NumPy, ma la libreria offre molte altre funzionalità avanzate come la manipolazione di array complessi, l’algebra lineare e la trasformata di Fourier.

Leggi tutti i nostri articoli sulla Data Tech

Vuoi scopri le ultime novità su Fivetran e nuove tecnologie di data science?

Visualitics Team
Questo articolo è stato scritto e redatto da uno dei nostri consulenti.

Condividi ora sui tuoi canali social o via email: