Ottieni un intervallo di numeri mobili in Python
-
Ottieni un intervallo di numeri in virgola mobile usando il metodo
numpy.arange()
in Python - Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione della lista in Python
- Ottieni un intervallo di numeri in virgola mobile utilizzando la comprensione del generatore in Python
- Ottieni un intervallo di numeri in virgola mobile utilizzando la funzione generatore in Python
-
Ottieni un intervallo di numeri in virgola mobile usando il metodo
numpy.linspace()
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.