Guida all'uso di NumPy
Una panoramica completa e guida tecnica introduttiva a NumPy, che copre l'installazione, la manipolazione degli array, l'indicizzazione, la trasmissione e l'integrazione con C/C++.
Lezioni
Panoramica del corso
📚 Riepilogo del contenuto
Un'introduzione completa e un manuale tecnico su NumPy, che copre l'installazione, la manipolazione degli array, l'indicizzazione, la trasmissione (broadcasting) e l'integrazione con C/C++.
Padroneggia le basi del calcolo scientifico in Python con la guida ufficiale di NumPy.
Autore: La comunità NumPy
Ringraziamenti: Redatto dalla comunità NumPy
🎯 Obiettivi di apprendimento
- Definire NumPy e identificare il suo ruolo nell'ecosistema scientifico di Python.
- Spiegare perché NumPy è significativamente più veloce dei cicli standard di Python utilizzando il concetto di vettorizzazione.
- Eseguire comandi di installazione per diversi ambienti, inclusi Pip, Conda e Raspberry Pi.
- Identificare e interpretare gli attributi fondamentali
ndarraycomendim,shapeedtype. - Eseguire creazione e manipolazione di array usando funzioni come
linspace,reshape,vstackehstack. - Applicare operazioni elemento per elemento, funzioni universali (ufuncs) e risolutori di algebra lineare a insiemi di dati numerici.
- Gestire la precisione dei dati e mitigare gli errori di overflow utilizzando i tipi scalari di NumPy e gli strumenti di informazione (
iinfo,finfo). - Implementare l'ingresso flessibile dei dati dal disco usando
genfromtxtcon delimitatori personalizzati, intestazioni e selezioni di colonne. - Applicare le Regole Generali di Broadcasting per prevedere e controllare le interazioni tra array di forme diverse.
- Gestire i riferimenti alla memoria e evitare "insidie" nelle sottoclassi personalizzate di
ndarrayutilizzando l'attributo.base.
🔹 Lezione 1: Introduzione e configurazione dell’ambiente
Panoramica: Questa lezione presenta NumPy come la libreria fondamentale per il calcolo scientifico in Python, spiegando i suoi vantaggi prestazionali attraverso la vettorizzazione. Gli studenti impareranno a installare la libreria su diverse piattaforme (Windows, Raspberry Pi, Conda, PyCharm) e a risolvere problemi di installazione comuni come ImportError, gestendo variabili d'ambiente e dipendenze di sistema.
Risultati dell'apprendimento:
- Definire NumPy e identificare il suo ruolo nell'ecosistema scientifico di Python.
- Spiegare perché NumPy è significativamente più veloce dei cicli standard di Python utilizzando il concetto di vettorizzazione.
- Eseguire comandi di installazione per diversi ambienti, inclusi Pip, Conda e Raspberry Pi.
🔹 Lezione 2: Fondamenti essenziali e manipolazione degli array
Panoramica: Questa lezione fornisce un'introduzione completa all'oggetto ndarray di NumPy, coprendo i suoi attributi principali, metodi di creazione e operazioni matematiche di base. Si estende a temi avanzati come l'indicizzazione sofisticata (booleana e basata su interi), la manipolazione della forma e routine fondamentali di algebra lineare. Al termine di questo modulo, gli apprendisti saranno in grado di memorizzare, trasformare ed analizzare strutture di dati multidimensionali in modo efficiente.
Risultati dell'apprendimento:
- Identificare e interpretare gli attributi fondamentali
ndarraycomendim,shapeedtype. - Eseguire creazione e manipolazione di array usando funzioni come
linspace,reshape,vstackehstack. - Applicare operazioni elemento per elemento, funzioni universali (ufuncs) e risolutori di algebra lineare a insiemi di dati numerici.
🔹 Lezione 3: Gestione avanzata dei dati e broadcasting
Panoramica: Questa lezione affronta i meccanismi avanzati di NumPy, con particolare attenzione alla gestione precisa dei tipi di dati, al trattamento degli overflow e alle operazioni I/O sofisticate con genfromtxt. Gli studenti padroneggeranno la logica interna del Broadcasting per operazioni aritmetiche, le sfumature dell'ordinamento a livello di byte nella memoria e la creazione di array strutturati/record per insiemi di dati eterogenei. Le ultime sezioni descrivono l'estensibilità di NumPy tramite contenitori di array personalizzati e i protocolli formali per la sottoclasse di ndarray.
Risultati dell'apprendimento:
- Gestire la precisione dei dati e mitigare gli errori di overflow utilizzando i tipi scalari di NumPy e gli strumenti di informazione (
iinfo,finfo). - Implementare l'ingresso flessibile dei dati dal disco usando
genfromtxtcon delimitatori personalizzati, intestazioni e selezioni di colonne. - Applicare le Regole Generali di Broadcasting per prevedere e controllare le interazioni tra array di forme diverse.
🔹 Lezione 4: Eccezioni numeriche e interfacciamento linguistico
Panoramica: Questa lezione esplora le sfumature avanzate della sottoclasse di NumPy, in particolare riguardo alla gestione della memoria e alla compatibilità verso il basso. Esamina inoltre come NumPy implementa lo standard IEEE 754 per i numeri floating-point per gestire valori speciali ed eccezioni numeriche, concludendo con i meccanismi per interfacciare array NumPy con linguaggi a basso livello come C, C++ e Fortran.
Risultati dell'apprendimento:
- Gestire i riferimenti alla memoria e evitare "insidie" nelle sottoclassi personalizzate di
ndarrayutilizzando l'attributo.base. - Mantenere la compatibilità verso il basso nelle sottoclassi implementando correttamente
__array_wrap__e le firme dei metodi. - Identificare e manipolare valori speciali IEEE 754 (NaN, Inf) e configurare i comportamenti globali delle eccezioni numeriche.
🔹 Lezione 5: Estensione di NumPy tramite l'API C
Panoramica: Questa lezione esplora i diversi metodi per estendere la funzionalità di NumPy interfacciandosi con linguaggi compilati come C, C++ e Fortran. Copre strumenti automatizzati come f2py e Cython, l'involucro manuale con ctypes, la creazione di funzioni universali (ufuncs) ad alte prestazioni, e tecniche avanzate dell'API C per l'iterazione sugli array, i tipi di dati personalizzati e la sottoclasse di ndarray.
Risultati dell'apprendimento:
- Confrontare e implementare vari metodi per "collegare" codice compilato a Python (f2py, Cython, ctypes).
- Creare e registrare funzioni universali (ufuncs) personalizzate di NumPy per tipi singoli e multipli di dati, incluse le matrici strutturate.
- Utilizzare l'API C di NumPy per eseguire iterazioni efficienti sugli array, gestire il broadcasting e definire tipi di dati o sottoclassi di
ndarraydefiniti dall'utente.