Salta al contenuto

Numpy: definizione e caratteristiche principali

Foto Autore
Contenuto a cura di Roberto Varriale Aggiornato il 7 Novembre 2026 · Lettura: 9 min

Numpy è una libreria open source di Python per il calcolo numerico, costruita attorno all’array multidimensionale ndarray, più veloce delle liste native quando si eseguono operazioni matematiche su grandi quantità di dati. Nata nel 2005 dal lavoro di Travis Oliphant, è alla base di molti strumenti di analisi dati e machine learning scritti in Python.

Cosa ricordare di Numpy

  • Cos’è: una libreria Python open source per il calcolo numerico, basata sull’array ndarray.
  • Caratteristica centrale: esegue operazioni matematiche su interi array senza cicli espliciti, grazie a vectorization e broadcasting.
  • Installazione: si aggiunge con pip install numpy, non arriva preinstallata con Python.
  • Differenza con le liste: l’array di Numpy è omogeneo e occupa un blocco di memoria contiguo, la lista Python no.
  • Origine e licenza: creata nel 2005 da Travis Oliphant, distribuita con licenza open source della famiglia BSD.
  • Ecosistema: Pandas, Scikit-learn, PyTorch e TensorFlow si basano su di esso.

Che cos’è Numpy e da dove nasce

Numpy nasce nel 2005, quando Travis Oliphant unisce due progetti concorrenti, Numeric e Numarray, in un unico pacchetto capace di gestire array di grandi dimensioni senza i compromessi di entrambi. Numeric, il predecessore, risale al 1995 ed era già usato nella comunità scientifica che lavorava con Python; Numarray arriva dopo, più adatto agli array grandi ma più lento su quelli piccoli. La fusione del 2005 chiude questa convivenza e diventa lo standard de facto per il calcolo numerico in Python.

Il progetto è distribuito con licenza open source della famiglia BSD: su Wikipedia la licenza compare sinteticamente come “BSD”, mentre la pagina tecnica di PyPI elenca in modo più preciso BSD-3-Clause insieme ad altre licenze permissive minori (0BSD, MIT, Zlib, CC0-1.0) applicate a singoli file del pacchetto. Il codice sorgente è pubblico sul repository GitHub del progetto, e la gestione è affidata a una community di maintainer, non a un’unica azienda.

Numpy è un pacchetto che si importa in uno script Python, nulla di più e nulla di meno. Il nucleo di calcolo è scritto in C, ma l’interfaccia che si usa ogni giorno resta Python. Per questo compare come fondamenta sotto librerie più note a chi lavora con dati, dal ruolo di pandas nell’analisi dati fino ai framework di deep learning.

Griglia numerica astratta che rappresenta un array multidimensionale con celle colorate in sequenza
Una struttura a griglia è il modo più semplice per visualizzare come un array organizza i numeri in memoria.

Caratteristiche principali di Numpy

La caratteristica che decide tutto il resto è l’ndarray, l’oggetto array n-dimensionale di Numpy: una struttura omogenea, dove ogni elemento ha lo stesso tipo di dato (il dtype), salvata in un blocco di memoria contiguo. Questa omogeneità è ciò che rende possibili le operazioni veloci: il motore non deve controllare il tipo di ogni singolo elemento a ogni passaggio, come succede con una lista Python.

Su questa base poggiano due meccanismi che tornano in ogni script: la vectorization, che applica un’operazione a un intero array senza scrivere un ciclo for, e il broadcasting, che combina array di forme diverse (per esempio una matrice e un singolo numero) senza doverli prima rendere identici. Le funzioni che eseguono queste operazioni elemento per elemento si chiamano ufunc, universal function, e sono scritte in C per restare veloci anche su milioni di valori.

Ogni array ha un numero di dimensioni (il rank) e una forma (lo shape, l’asse o axis lungo cui si contano righe, colonne o livelli più profondi): sono gli attributi che si controllano per primi quando qualcosa nel codice non torna. La documentazione ufficiale del progetto resta il riferimento più completo per la lista di funzioni matematiche disponibili, dall’algebra lineare alle trasformate di Fourier alla generazione di numeri casuali.

Finestra di terminale con un comando di installazione di un pacchetto Python in esecuzione
L’installazione passa sempre dal gestore pacchetti di Python, qualunque sia il sistema operativo.

Come si installa Numpy

Numpy non arriva preinstallato con Python: va aggiunto a parte, e la procedura è identica su Windows, macOS e Linux.

  1. Apri il terminale (o il prompt dei comandi su Windows).
  2. Esegui pip install numpy, oppure pip3 install numpy se il sistema distingue Python 2 e 3.
  3. Importa la libreria in uno script o in una shell Python con import numpy as np: questa è la convenzione usata in quasi tutto il codice che si trova in giro.
  4. Verifica la versione installata con np.__version__, utile quando un collega segnala un comportamento diverso dal tuo.

Secondo i dati di distribuzione su PyPI aggiornati a ottobre 2026, la release corrente è la 2.5.4, pubblicata il , e richiede almeno Python 3.12; i pacchetti precompilati coprono anche Python 3.13, 3.14 e 3.15. Chi lavora ancora con versioni di Python più vecchie deve installare una release precedente di Numpy, non l’ultima: è un dettaglio che vale la pena controllare prima di aggiornare un ambiente di produzione.

Array di Numpy o lista Python: quando cambia qualcosa

Un array di Numpy e una lista Python sembrano la stessa cosa finché i numeri sono pochi. Le differenze contano quando i dati crescono o quando servono calcoli matematici ripetuti su tutti gli elementi.

Confronto tra lista Python e array Numpy
Caratteristica Lista Python Array Numpy
Tipo degli elementi Eterogeneo, ogni elemento può avere un tipo diverso Omogeneo, un solo dtype per tutto l’array
Memoria Elementi sparsi, puntatori a oggetti separati Blocco contiguo di memoria
Operazioni matematiche dirette Richiedono un ciclo o una list comprehension Dirette su tutto l’array, senza ciclo esplicito
Dimensioni Ridimensionabile liberamente Dimensione fissa dopo la creazione
Uso tipico Dati misti, piccole collezioni Calcoli numerici su grandi volumi

La maggior velocità dell’array di Numpy sulle grandi quantità di dati dipende proprio da questi due punti: memoria contigua e tipo unico per elemento permettono al codice C sottostante di scorrere i dati senza le verifiche che una lista generica richiede a ogni passo. Su poche decine di valori questa differenza non si nota; su migliaia di righe diventa evidente nei tempi di esecuzione.

Le librerie costruite su Numpy

Numpy raramente si usa da solo: è il livello su cui poggiano le librerie che chi lavora con i dati incontra tutti i giorni. La libreria che si occupa della pulizia e della trasformazione dei dataset tabellari usa Numpy internamente per rappresentare le colonne; gli algoritmi di apprendimento automatico per classificazione e regressione si appoggiano agli stessi array per allenare i modelli. Chi lavora con le reti neurali trova lo stesso principio, con tensori al posto di array semplici, nel framework di deep learning basato su tensori e GPU e nella piattaforma di machine learning sviluppata da Google Brain.

La domanda su Numpy e Pandas torna spesso, e la risposta è una questione di livello: Numpy gestisce l’array numerico puro, Pandas aggiunge sopra un’etichettatura di righe e colonne pensata per dataset simili a fogli di calcolo. Chi deve pulire un export di vendite con colonne miste di testo e numeri lavora quasi sempre con Pandas, che a sua volta si appoggia su Numpy per i calcoli.

In un articolo dedicato alle librerie Python per data science (2026) si legge che il 90% del lavoro nella data science consiste nel pulire i dati. Nel mio lavoro consiglio quasi sempre di imparare prima le basi di Numpy e Pandas insieme, invece di partire direttamente da un modello di machine learning.

Quando serve davvero Numpy

La domanda chiave è se il volume di dati che gestisci giustifica l’uso di Numpy.

Se lavori con poche decine o centinaia di righe

Un elenco di prezzi gestito a mano o un foglio con qualche decina di righe si manipola bene con le strutture dati base di Python, o direttamente in un foglio di calcolo. Introdurre Numpy qui aggiunge una dipendenza senza un vantaggio misurabile sui tempi.

Se il file supera le migliaia di righe o richiede calcoli ripetuti

Nello stesso articolo citato sopra si racconta il caso di un e-commerce con un file da 15.000 righe di vendite relative a tre anni, con date in formato misto e prezzi negativi da correggere prima di qualsiasi analisi; in un altro passaggio si parla di un gestionale che produce un CSV con 40.000 righe di vendite. Sono volumi tipici di una piccola o media impresa con qualche anno di storico, e sono la soglia in cui passare da liste Python a Numpy (di solito tramite Pandas) smette di essere una scelta tecnica e diventa una questione di tempo di lavoro risparmiato. La regola generale, quando un export supera qualche migliaio di righe con colonne da sistemare, è proporre prima la pulizia con questi strumenti e solo dopo ragionare su cosa farne.

Casi limite da conoscere

Numpy da solo non gestisce le matrici sparse, quelle con moltissimi zeri: per quel caso specifico serve il modulo scipy.sparse, che si appoggia a Numpy ma aggiunge una rappresentazione dedicata.

Molte operazioni di Numpy rilasciano il GIL di Python, il meccanismo che di norma limita l’esecuzione simultanea di più thread: è il motivo per cui il codice numerico scala meglio su più core rispetto a codice Python puro equivalente, pur restando scritto nello stesso linguaggio.

Chi usa interpreti alternativi a CPython deve verificare la compatibilità caso per caso: al 2023, secondo Wikipedia, l’implementazione dell’API Numpy per PyPy non era ancora completa. Questo va controllato prima di scegliere un ambiente diverso da quello standard, perché la situazione può cambiare nel tempo.

Domande frequenti su Numpy

Devo installare Numpy separatamente da Python?

Sì, Numpy non fa parte della libreria standard di Python: va aggiunto con un gestore di pacchetti prima di poterlo importare in uno script, su qualunque sistema operativo.

Posso installare Numpy con pip?

Sì, il comando pip install numpy è il metodo standard indicato dalla documentazione del progetto e dalla pagina del pacchetto su PyPI, valido su Windows, macOS e Linux.

Numpy funziona con Python 3.13?

Sì, secondo i classificatori della release 2.5.4 su PyPI aggiornati a ottobre 2026 il pacchetto supporta Python 3.12, 3.13, 3.14 e 3.15; versioni di Python più vecchie richiedono una release precedente di Numpy.

Perché un array Numpy è più veloce di una lista Python?

Un array Numpy è più veloce perché occupa un blocco di memoria contiguo con elementi dello stesso tipo: il codice C sottostante scorre i dati senza controllare il tipo a ogni elemento, cosa che una lista Python generica richiede.

Numpy e Pandas sono la stessa cosa?

No, sono due livelli diversi: Numpy gestisce l’array numerico puro, mentre la libreria per l’analisi di dataset tabellari con etichette di riga e colonna si appoggia su Numpy per i calcoli interni.

Posso usare Numpy in Visual Studio Code?

Sì, Numpy è un pacchetto Python come un altro: funziona in qualunque ambiente che esegua Python, da Visual Studio Code a Jupyter Notebook, senza configurazioni specifiche per l’editor.

Quante dimensioni può avere un array Numpy?

Un array Numpy può avere un numero qualsiasi di dimensioni, da uno (un vettore) a molte: il valore si legge con l’attributo shape e determina come si accede ai singoli elementi.

Numpy gestisce le matrici sparse?

Per le matrici con moltissimi valori a zero serve il modulo scipy.sparse, che integra Numpy con una rappresentazione pensata per quel caso specifico.

Fonti e riferimenti

Questo contenuto ti ha aiutato?

Ti è stato utile questo articolo?

Aiuta altri professionisti a crescere. Condividi questo contenuto con il tuo network.

Iscriviti alla Newsletter

Ricevi una sola mail a settimana con strategie, casi studio e consigli pratici per scalare la tua impresa. Zero spam, promesso.

Quanto fa + ?

Roberto
Varriale

In quasi 20 anni ho aiutato oltre 700 Micro Imprese a migliorare il ROI aumentando Vendite e clienti con il Traffico Organico.

Chi Sono

"Se questa risorsa ti è stata utile, valuta se seguirmi anche nei social sia l'investimento di tempo migliore che tu possa fare adesso."

Roberto Varriale