Man mano che la data science evolve, alcuni cambiamenti alle librerie più comuni sono necessari e, questa volta, la libreriaNumPy viene aggiornata alla versione 2.0. Questo importante aggiornamento, rilasciato a giugno 2024, porta molte nuove funzionalità e miglioramenti alla popolare libreria Python.
Con un salto così grande nei cambiamenti, è inevitabile che ci siano aree da tenere d'occhio che potrebbero richiedere di adattare il tuo codice esistente.
In questo articolo, ti proponiamo una panoramica di cosa include NumPy 2.0, i cambiamenti chiave e come migrare a NumPy 2.0.
Introduzione a NumPy 2.0
Basato su anni di feedback e progressi tecnologici, NumPy 2.0 è un aggiornamento ambizioso, diverso dai molti update precedenti degli ultimi anni.
Nel loropost di rilascio, hanno presentato un'API aggiornata, regole migliorate di promozione degli scalari, una nuova API per i DType e un nuovo DType per le stringhe, miglioramenti di compatibilità e un allineamento degli standard dell'API. Grazie a questi interventi, gli utenti noteranno significativi miglioramenti nelle prestazioni e nella documentazione.
Tuttavia, con un cambiamento così grande alla libreria, questo nuovo rilascio comporta anche alcune rotture. Ad esempio, le nuove modifiche ad API e ABI non sono retrocompatibili.
Nuove funzionalità principali
Secondo le note di rilascio, NumPy 2.0 introduce cambiamenti significativi, e questi sono i più rilevanti:
Modifiche ad API e ABI
In questo aggiornamento sono state apportate diverseoperazioni di pulizia all'API e all'ABI (Application Binary Interface).
Con il nuovo aggiornamento, come indicato nella NEP (NumPy Enhancement Proposal) 52, NumPy si discosta dalla sua abituale posizione di mantenere la retrocompatibilità per garantire un'API più snella, pulita e semplice.
Ecco alcune modifiche degne di nota:
Separazione tra API pubblica e privata: Utilizzando una struttura a moduli, l'API di NumPy per Python ha ora una chiara distinzione tra API pubblica e privata.
Per quanto riguarda le modifiche all'ABI, con il nuovo rilascio ci sarà una rottura. Questo influenzerà i binari dei pacchetti che utilizzano la C API di NumPy.
Chiunque lo compili contro una qualsiasi precedente versione NumPy 1.xx non funzionerà con NumPy 2.0. Condividerò più avanti come migrare secondo le loro raccomandazioni. Incontrerai un messaggio ImportError, che indica un'incompatibilità binaria.
Nuova DType API e String DType
Come proposto nellaNEP 41, questo aggiornamento 2.0 rilascia una nuova API per implementare tipi di dati personalizzati definiti dall'utente utilizzando il tipo di dato StringDType. Questa nuova API include il supporto nativo per tipi di dati stringa a lunghezza variabile, richiesto da tempo dagli utenti NumPy.
Regole di promozione degli scalari
Proposte inizialmente nellaNEP 50, anche le regole di promozione degli scalari in NumPy sono state aggiornate per evitare sorprese agli utenti. In passato, la promozione dipendeva spesso dai valori dei dati degli array di input e non solo dai loro DType, un comportamento che può risultare confuso.
Per i nuovi percorsi di promozione, vedi l'immagine qui sotto:
Fonte: Precisione e promozione dei DType in NumPy
Miglioramenti delle prestazioni
Questo nuovo rilascio introduce anche alcuni miglioramenti delle prestazioni.
Ecco alcune aree chiave che sono state migliorate:
Funzioni di ordinamento più veloci
Miglioramenti alle prestazioni delle operazioni di algebra lineare su macOS tramite macOS Accelerate
Compatibilità con Windows
Per soddisfare meglio gli utenti Windows, il team di NumPy ha corretto anche diversi problemi di compatibilità con il nuovo rilascio.
Ad esempio, hanno cambiato il tipo intero predefinito su Windows in int64 invece di int32, per allinearlo al comportamento predefinito sugli altri sistemi operativi.
Documentazione e usabilità migliorate
È stata aggiunta più documentazione allastruttura dei moduli di NumPy e sono stati migliorati la navigazione nella guida di riferimento. La documentazione sullacompilazione dai sorgenti è stata inoltre completamente riscritta.
Come migrare a NumPy 2.0
Aggiornare a NumPy 2.0
Per iniziare con questa nuova versione di NumPy, per prima cosa devi aggiornarla dalla tua versione attuale all'ultima disponibile.
Per farlo, usa semplicemente l'opzione di upgrade in questo comando:
Questa opzione aggiorna il pacchetto specificato alla versione più recente, che in questo caso è NumPy. Dopo aver eseguito il comando, lascia che il sistema installi il pacchetto finché non vedi il messaggio "Successfully installed numpy-2.0.0".
Se vuoi aggiornare a una versione specifica invece che all'ultima, puoi usare questo comando:
Questo dovrebbe elencare tutti i pacchetti/librerie installati e le rispettive versioni. Controlla l'output per verificare che la libreria numpy sia aggiornata alla versione 2.0.0.
Durante l'installazione, potresti anche imbaterti in alcuni messaggi di dipendenza in rosso. Questo significa che potrebbero esserci problemi nel tuo codice dopo l'aggiornamento alla versione più recente. Potrai quindi analizzare le singole aree e librerie interessate.
L'aggiornamento a NumPy 2.0 può essere temporaneamente dirompente, quindi è meglio assicurarsi che tutto sia migrato correttamente nei tuoi script e nelle pipeline future.
Questo restituisce un tipo di dato float32 invece di float64, il che rende difficile la retrocompatibilità. Per affrontare il problema, ecco cosa raccomandano:
Effettua cast espliciti dei tipi di dato: usa gli scalari int(), float() o numpy_scalar.item() per specificare esplicitamente il tuo tipo di dato.
Abilita gli avvisi per rintracciare i cambiamenti: utilizza i warning per individuare i cambiamenti tramite i traceback degli errori.
Gestire i cambiamenti negli spazi dei nomi
Con questo aggiornamento 2.0, le numerose rimozioni negli spazi dei nomi possono influire sul tuo codice. Il team di NumPy suggerisce questi passaggi:
Sostituisci gli alias deprecati con un'alternativa retrocompatibile.
Verifica i membri privati rimossi nell'aggiornamento 2.0.
Usa l'API esistente se venivano utilizzati membri privati.
Gestire le rotture dell'ABI
Se stai usando un pacchetto Python che dipende dalla C API di NumPy, dovrai affrontare eventuali rotture dell'ABI. Gli sviluppatori hanno pubblicato alcuniconsigli specifici per NumPy 2.0 per queste situazioni, per risolvere l'incompatibilità:
Plugin Ruff per aggiornare il codice Python
Per aiutarti nel processo di migrazione, puoi usare ilplugin Ruff con una regola dedicata di Ruff, NPY201.
Ruff è disponibile come ruff su PyPI. Per installare Ruff, inserisci questo comando nel terminale:
In alternativa, puoi anche specificare la regola NPY201 dalla riga di comando:
$ ruff check path/to/code/--select NPY201Offerto da
Contributi della community
Il rilascio di NumPy 2.0 è il culmine degli sforzi della sua community. Attraverso le numerose NEP suggerite dalla community, molte proposte attese da tempo sono finalmente state implementate.
Sviluppatori, ricercatori ed entusiasti hanno tutti svolto un ruolo fondamentale in questo rilascio innovativo, condividendo competenze, fornendo feedback e inviando miglioramenti al codice che hanno contribuito in modo significativo a plasmare NumPy 2.0.
Conclusione
NumPy 2.0 è un grande passo avanti per il linguaggio di programmazione Python, grazie alle numerose nuove funzionalità e ai miglioramenti in termini di prestazioni, compatibilità e usabilità. Se riscontri problemi durante la migrazione o qualche tipo di errore, è meglio contattare direttamente il team di NumPy.
Spero che questo articolo ti sia stato utile per capire i principali cambiamenti di questo entusiasmante aggiornamento di NumPy. Per approfondire, leggi il nostro tutorial su NumPy.
Sono Austin, blogger e autore tech con anni di esperienza come data scientist e data analyst nel settore sanitario. Partito dalla biologia, oggi aiuto altri a fare lo stesso passaggio attraverso il mio blog tecnologico. La mia passione per la tecnologia mi ha portato a collaborare come autore con decine di aziende SaaS, ispirando altre persone e condividendo le mie esperienze.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Sviluppa le tue capacità di analisi dei dati in Python. Acquisisci le competenze di analista dei dati per manipolarli, analizzarli e visualizzarli. Non è richiesta alcuna esperienza di codifica!
Man mano che la data science evolve, alcuni cambiamenti alle librerie più comuni sono necessari e, questa volta, la libreria NumPy viene aggiornata alla versione 2.0. Questo importante aggiornamento, rilasciato a giugno 2024, porta molte nuove funzionalità e miglioramenti alla popolare libreria Python.
Con un salto così grande nei cambiamenti, è inevitabile che ci siano aree da tenere d'occhio che potrebbero richiedere di adattare il tuo codice esistente.
In questo articolo, ti proponiamo una panoramica di cosa include NumPy 2.0, i cambiamenti chiave e come migrare a NumPy 2.0.
Introduzione a NumPy 2.0
Basato su anni di feedback e progressi tecnologici, NumPy 2.0 è un aggiornamento ambizioso, diverso dai molti update precedenti degli ultimi anni.
Nel loro post di rilascio, hanno presentato un'API aggiornata, regole migliorate di promozione degli scalari, una nuova API per i DType e un nuovo DType per le stringhe, miglioramenti di compatibilità e un allineamento degli standard dell'API. Grazie a questi interventi, gli utenti noteranno significativi miglioramenti nelle prestazioni e nella documentazione.
Tuttavia, con un cambiamento così grande alla libreria, questo nuovo rilascio comporta anche alcune rotture. Ad esempio, le nuove modifiche ad API e ABI non sono retrocompatibili.
Nuove funzionalità principali
Secondo le note di rilascio, NumPy 2.0 introduce cambiamenti significativi, e questi sono i più rilevanti:
Modifiche ad API e ABI
In questo aggiornamento sono state apportate diverse operazioni di pulizia all'API e all'ABI (Application Binary Interface).
Con il nuovo aggiornamento, come indicato nella NEP (NumPy Enhancement Proposal) 52, NumPy si discosta dalla sua abituale posizione di mantenere la retrocompatibilità per garantire un'API più snella, pulita e semplice.
Ecco alcune modifiche degne di nota:
Per quanto riguarda le modifiche all'ABI, con il nuovo rilascio ci sarà una rottura. Questo influenzerà i binari dei pacchetti che utilizzano la C API di NumPy.
Chiunque lo compili contro una qualsiasi precedente versione NumPy 1.xx non funzionerà con NumPy 2.0. Condividerò più avanti come migrare secondo le loro raccomandazioni. Incontrerai un messaggio ImportError, che indica un'incompatibilità binaria.
Nuova DType API e String DType
Come proposto nella NEP 41, questo aggiornamento 2.0 rilascia una nuova API per implementare tipi di dati personalizzati definiti dall'utente utilizzando il tipo di dato StringDType. Questa nuova API include il supporto nativo per tipi di dati stringa a lunghezza variabile, richiesto da tempo dagli utenti NumPy.
Regole di promozione degli scalari
Proposte inizialmente nella NEP 50, anche le regole di promozione degli scalari in NumPy sono state aggiornate per evitare sorprese agli utenti. In passato, la promozione dipendeva spesso dai valori dei dati degli array di input e non solo dai loro DType, un comportamento che può risultare confuso.
Per i nuovi percorsi di promozione, vedi l'immagine qui sotto:
Fonte: Precisione e promozione dei DType in NumPy
Miglioramenti delle prestazioni
Questo nuovo rilascio introduce anche alcuni miglioramenti delle prestazioni.
Ecco alcune aree chiave che sono state migliorate:
Compatibilità con Windows
Per soddisfare meglio gli utenti Windows, il team di NumPy ha corretto anche diversi problemi di compatibilità con il nuovo rilascio.
Ad esempio, hanno cambiato il tipo intero predefinito su Windows in
int64invece diint32, per allinearlo al comportamento predefinito sugli altri sistemi operativi.Documentazione e usabilità migliorate
È stata aggiunta più documentazione alla struttura dei moduli di NumPy e sono stati migliorati la navigazione nella guida di riferimento. La documentazione sulla compilazione dai sorgenti è stata inoltre completamente riscritta.
Come migrare a NumPy 2.0
Aggiornare a NumPy 2.0
Per iniziare con questa nuova versione di NumPy, per prima cosa devi aggiornarla dalla tua versione attuale all'ultima disponibile.
Per farlo, usa semplicemente l'opzione di upgrade in questo comando:
In alternativa, puoi anche usare questo:
Questa opzione aggiorna il pacchetto specificato alla versione più recente, che in questo caso è NumPy. Dopo aver eseguito il comando, lascia che il sistema installi il pacchetto finché non vedi il messaggio "Successfully installed numpy-2.0.0".
Se vuoi aggiornare a una versione specifica invece che all'ultima, puoi usare questo comando:
Questo garantisce che la versione che stai installando sia quella giusta, in questo caso la 2.0.0.
Per un secondo controllo, esegui questo comando:
Questo dovrebbe elencare tutti i pacchetti/librerie installati e le rispettive versioni. Controlla l'output per verificare che la libreria
numpysia aggiornata alla versione 2.0.0.Durante l'installazione, potresti anche imbaterti in alcuni messaggi di dipendenza in rosso. Questo significa che potrebbero esserci problemi nel tuo codice dopo l'aggiornamento alla versione più recente. Potrai quindi analizzare le singole aree e librerie interessate.
L'aggiornamento a NumPy 2.0 può essere temporaneamente dirompente, quindi è meglio assicurarsi che tutto sia migrato correttamente nei tuoi script e nelle pipeline future.
Per una guida completa, consulta l' officiale Guida alla migrazione a NumPy 2.0 pubblicata dagli sviluppatori.
Ecco le aree chiave da considerare durante la migrazione:
Gestire i cambiamenti nella promozione dei tipi di dato di NumPy
Per una guida completa sui diversi cambi di comportamento e i cambiamenti attesi dei tipi di dato, fai riferimento a questa tabella nella NEP 50.
Il principale problema di retrocompatibilità riguarda la precisione degli scalari.
Ad esempio, quando viene eseguita un'operazione come questa:
Questo restituisce un tipo di dato float32 invece di float64, il che rende difficile la retrocompatibilità. Per affrontare il problema, ecco cosa raccomandano:
Effettua cast espliciti dei tipi di dato: usa gli scalari
int(),float()onumpy_scalar.item()per specificare esplicitamente il tuo tipo di dato.Abilita gli avvisi per rintracciare i cambiamenti: utilizza i warning per individuare i cambiamenti tramite i traceback degli errori.
Gestire i cambiamenti negli spazi dei nomi
Con questo aggiornamento 2.0, le numerose rimozioni negli spazi dei nomi possono influire sul tuo codice. Il team di NumPy suggerisce questi passaggi:
Gestire le rotture dell'ABI
Se stai usando un pacchetto Python che dipende dalla C API di NumPy, dovrai affrontare eventuali rotture dell'ABI. Gli sviluppatori hanno pubblicato alcuni consigli specifici per NumPy 2.0 per queste situazioni, per risolvere l'incompatibilità:
Plugin Ruff per aggiornare il codice Python
Per aiutarti nel processo di migrazione, puoi usare il plugin Ruff con una regola dedicata di Ruff, NPY201.
Ruff è disponibile come ruff su PyPI. Per installare Ruff, inserisci questo comando nel terminale:
Per maggiori dettagli, vedi la guida completa all'installazione di Ruff.
Assicurati di specificare la regola
NP201nel tuopyproject.toml:In alternativa, puoi anche specificare la regola NPY201 dalla riga di comando:
Contributi della community
Il rilascio di NumPy 2.0 è il culmine degli sforzi della sua community. Attraverso le numerose NEP suggerite dalla community, molte proposte attese da tempo sono finalmente state implementate.
Sviluppatori, ricercatori ed entusiasti hanno tutti svolto un ruolo fondamentale in questo rilascio innovativo, condividendo competenze, fornendo feedback e inviando miglioramenti al codice che hanno contribuito in modo significativo a plasmare NumPy 2.0.
Conclusione
NumPy 2.0 è un grande passo avanti per il linguaggio di programmazione Python, grazie alle numerose nuove funzionalità e ai miglioramenti in termini di prestazioni, compatibilità e usabilità. Se riscontri problemi durante la migrazione o qualche tipo di errore, è meglio contattare direttamente il team di NumPy.
Spero che questo articolo ti sia stato utile per capire i principali cambiamenti di questo entusiasmante aggiornamento di NumPy. Per approfondire, leggi il nostro tutorial su NumPy.
Se sei alle prime armi con NumPy e vuoi esplorare di più, prova il nostro corso Introduction to NumPy o dai un'occhiata a questo training live di NumPy con codice insieme.