Ottieni un intervallo di numeri mobili in Python

Muhammad Waiz Khan 30 gennaio 2023
  1. Ottieni un intervallo di numeri in virgola mobile usando il metodo numpy.arange() in Python
  2. Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione della lista in Python
  3. Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione del generatore in Python
  4. Ottieni un intervallo di numeri in virgola mobile utilizzando la funzione generatore in Python
  5. Ottieni un intervallo di numeri in virgola mobile usando il metodo numpy.linspace() in Python
Ottieni un intervallo di numeri mobili in Python

In questo tutorial, esamineremo vari metodi per ottenere una sequenza di valori float in Python. Supponiamo di aver bisogno di una serie di numeri con un passo di 0.1, ma il problema è che la funzione range() non accetta un float come input e restituisce invece un TypeError.

Possiamo generare una sequenza di valori float con una dimensione del passo uniforme in Python usando i metodi spiegati di seguito.

Ottieni un intervallo di numeri in virgola mobile usando il metodo numpy.arange() in Python

Il metodo numpy.arange(start, stop, step) restituisce una sequenza di valori all’interno dei valori start e stop con la dimensione del passo uguale al valore step. Il valore predefinito degli argomenti start e step è rispettivamente 0 e 1.

Il vantaggio di usare il metodo numpy.arange() è che può generare l’intervallo dei valori float. Ma non è una funzione predefinita di Python, e per usarla è necessaria la libreria NumPy.

Il codice di esempio sotto mostra come utilizzare il metodo numpy.arange() per ottenere la sequenza di valori da 0 a 1 con la dimensione del passo uguale a 0.1.

import numpy as np

seq = np.arange(0, 1, 0.1)
print(seq)

Produzione:

[0.  0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]

Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione della lista in Python

La comprensione della lista è il metodo sintattico per creare un nuovo elenco da una lista esistente in Python. Possiamo generare l’intervallo o la sequenza di valori float creando un nuovo elenco dalla sequenza di valori restituiti dal metodo range().

Poiché il metodo range() può generare solo la sequenza di numeri interi, dovremo moltiplicare o dividere ogni valore della sequenza per il valore float richiesto per ottenere la sequenza desiderata. Poiché moltiplicando un intero, cioè 3 con il valore float 0.1 restituisce 0.30000000000000004, questo è il motivo per cui la divisione dell’intero per 10 deve essere preferita per generare la sequenza di valori float.

Il codice di esempio seguente mostra come ottenere l’intervallo o la sequenza di valori float in Python utilizzando il metodo di comprensione della lista.

seq = [x / 10 for x in range(0, 10)]
print(seq)

Produzione:

[0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione del generatore in Python

La comprensione del generatore è un approccio sintattico simile alla comprensione della lista che crea un oggetto generatore iterabile in Python. Possiamo accedere al nuovo valore dal generatore usando il metodo next() o scorrere l’intera sequenza usando il cicli for.

Il codice di esempio seguente mostra come utilizzare la comprensione del generatore per ottenere l’intervallo di float in Python.

seq = (x / 10 for x in range(0, 10))
for x in seq:
    print(x, end=" ")

Produzione:

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 

Ottieni un intervallo di numeri in virgola mobile utilizzando la funzione generatore in Python

Sebbene la comprensione del generatore sia un modo conciso e più diretto per ottenere un oggetto generatore in Python, la funzione generatore è un modo riutilizzabile e migliore per ottenere una gamma di valori float usando i valori start, stop e step di nostra scelta.

Il codice di esempio sotto mostra come creare una funzione generatore usando la parola chiave yield, simile alla funzione range() in Python.

def myrange(start, stop, step):
    while start < stop:
        yield start
        start = start + step


seq = myrange(0.0, 1.0, 0.1)

for x in seq:
    print(x)

Ottieni un intervallo di numeri in virgola mobile usando il metodo numpy.linspace() in Python

Il metodo numpy.linspace() come il metodo numpy.arange() restituisce la sequenza di valori dal valore start al valore stop. Invece dell’argomento step, il metodo numpy.linspace() accetta l’argomento num, che specifica il numero di valori da generare da start a stop.

Pertanto dovremo fornire il numero di valori num al metodo numpy.linspace(); la seguente formula può calcolare il valore di num usando i valori start, stop e step.

num = (stop - start)/step

Il codice di esempio sotto mostra come utilizzare numpy.linspace() per generare l’intervallo di float da 0 a 1 con il step uguale a 0.1. Il valore num per la sequenza richiesta sarà (0 - 1)/0.1 = 10.

seq = np.linspace(0, 1, 10, endpoint=0)
print(seq)

Produzione:

array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

L’argomento endpoint specifica se includere o meno l’ultimo valore della sequenza, poiché la sequenza inizia da 0 per impostazione predefinita.

Articolo correlato - Python Float