Torna ai corsi
AI018 Professional

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++.

4.9
15.0h
891 studenti
0 mi piace
Intelligenza Artificiale
Inizia ad imparare

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

  1. Definire NumPy e identificare il suo ruolo nell'ecosistema scientifico di Python.
  2. Spiegare perché NumPy è significativamente più veloce dei cicli standard di Python utilizzando il concetto di vettorizzazione.
  3. Eseguire comandi di installazione per diversi ambienti, inclusi Pip, Conda e Raspberry Pi.
  4. Identificare e interpretare gli attributi fondamentali ndarray come ndim, shape e dtype.
  5. Eseguire creazione e manipolazione di array usando funzioni come linspace, reshape, vstack e hstack.
  6. Applicare operazioni elemento per elemento, funzioni universali (ufuncs) e risolutori di algebra lineare a insiemi di dati numerici.
  7. Gestire la precisione dei dati e mitigare gli errori di overflow utilizzando i tipi scalari di NumPy e gli strumenti di informazione (iinfo, finfo).
  8. Implementare l'ingresso flessibile dei dati dal disco usando genfromtxt con delimitatori personalizzati, intestazioni e selezioni di colonne.
  9. Applicare le Regole Generali di Broadcasting per prevedere e controllare le interazioni tra array di forme diverse.
  10. Gestire i riferimenti alla memoria e evitare "insidie" nelle sottoclassi personalizzate di ndarray utilizzando 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 ndarray come ndim, shape e dtype.
  • Eseguire creazione e manipolazione di array usando funzioni come linspace, reshape, vstack e hstack.
  • 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 genfromtxt con 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 ndarray utilizzando 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 ndarray definiti dall'utente.