Array con valori sequenziali con NumPy in Python

Una delle funzionalità più utilizzate di NumPy è la creazione di array con valori sequenziali. Questo tipo di array è essenziale in molte applicazioni, come l'analisi dei dati, la grafica, e la simulazione numerica.

In questa pagina, esploreremo come creare array con valori sequenziali utilizzando NumPy, coprendo le principali funzioni disponibili e le loro applicazioni pratiche.

Gli array con valori sequenziali sono utili in numerosi contesti:

  • Inizializzazione di dati: per testare algoritmi o modelli con dati predefiniti e conosciuti.

  • Grafici e visualizzazioni: creare punti di dati su assi cartesiani o generare sequenze temporali.

  • Simulazioni: per simulare iterazioni o passi temporali in algoritmi e modelli di simulazione.

  • Automazione: per generare in modo automatico sequenze numeriche senza doverle digitare manualmente.

Funzione numpy.arange() di NumPy

La funzione numpy.arange() è una delle più utilizzate per creare array con valori sequenziali. È simile alla funzione range() di Python, ma con il vantaggio di creare un array NumPy, che può essere ulteriormente manipolato usando altre funzioni di NumPy.

import numpy as np array_sequenziale = np.arange(start, stop, step, dtype=None)

dove:

  • start (opzionale): il valore iniziale della sequenza. Se omesso, la sequenza parte da 0.

  • stop: Il valore finale della sequenza (non incluso).

  • step (opzionale): l'incremento tra un valore e l'altro nella sequenza. Il valore predefinito è 1.

  • dtype (opzionale): il tipo di dato dell'array risultante. Se non specificato, NumPy lo deduce automaticamente.

Creiamo un array di numeri interi da 0 a 9:

import numpy as np array_sequenziale = np.arange(10) print(array_sequenziale)  # Output: [0 1 2 3 4 5 6 7 8 9]

Funzione numpy.linspace() di NumPy

La funzione numpy.linspace() è ideale per creare un array con un numero specifico di valori equidistanti tra un valore iniziale e uno finale. Questa funzione è particolarmente utile quando si ha bisogno di un numero fisso di valori tra due estremi.

import numpy as np array_linspace = np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

dove:

  • start: il valore iniziale della sequenza.

  • stop: il valore finale della sequenza.

  • num (opzionale): il numero di valori da generare. Il valore predefinito è 50.

  • endpoint (opzionale): se True, stop è incluso nella sequenza. Il valore predefinito è True.

  • retstep (opzionale): se True, ritorna anche la distanza tra i valori della sequenza.

  • dtype (opzionale): il tipo di dato dell'array risultante.

Creiamo un array con 5 valori equidistanti tra 0 e 1:

import numpy as np array_linspace = np.linspace(0, 1, num=5) print(array_linspace)  # Output: [0.   0.25 0.5  0.75 1.  ]

Funzione numpy.logspace() di NumPy

La funzione numpy.logspace() genera valori equidistanti su una scala logaritmica. È utile in situazioni dove i valori crescono esponenzialmente, come in alcune applicazioni scientifiche e finanziarie.

import numpy as np array_logspace = np.logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None)

dove:

  • start: l'esponente iniziale.

  • stop: l'esponente finale.

  • num (opzionale): il numero di valori da generare. Il valore predefinito è 50.

  • base (opzionale): la base del logaritmo. Il valore predefinito è 10.

  • endpoint (opzionale): se True, stop è incluso nella sequenza.

  • dtype (opzionale): il tipo di dato dell'array risultante.

Creiamo un array di 5 valori equidistanti tra 101 e 103:

import numpy as np array_logspace = np.logspace(1, 3, num=5) print(array_logspace)  # Output: [  10.  31.6227766  100.  316.22776602 1000.  ]

Confronto tra arange, linspace e logspace

  • arange() è utile quando si desidera creare una sequenza con incrementi costanti e si conoscono esattamente i limiti della sequenza e il passo.

  • linspace() è preferibile quando si ha bisogno di un numero fisso di valori tra due estremi, indipendentemente dall'incremento.

  • ogspace() è ideale per generare sequenze esponenziali su una scala logaritmica.