Obtener rango de números flotantes en Python

Muhammad Waiz Khan 30 enero 2023
  1. Obtenga un rango de números de punto flotante usando el método numpy.arange() en Python
  2. Obtenga un rango de números de punto flotante usando la comprensión de listas en Python
  3. Obtenga un rango de números de punto flotante usando la comprensión del generador en Python
  4. Obtenga un rango de números de punto flotante usando la función de generador en Python
  5. Obtenga un rango de números de punto flotante usando el método numpy.linspace() en Python
Obtener rango de números flotantes en Python

En este tutorial, analizaremos varios métodos para obtener una secuencia de valores flotantes en Python. Supongamos que necesitamos una serie de números con un tamaño de paso de 0.1, pero el problema es que la función range() no acepta un flotante como entrada y devuelve un TypeError en su lugar.

Podemos generar una secuencia de valores flotantes con un tamaño de paso uniforme en Python utilizando los métodos que se explican a continuación.

Obtenga un rango de números de punto flotante usando el método numpy.arange() en Python

El método numpy.arange(start, stop, step) devuelve una secuencia de valores dentro de los valores start y stop con el tamaño del paso igual al valor step. El valor predeterminado de los argumentos start y step son 0 y 1, respectivamente.

La ventaja de usar el método numpy.arange() es que puede generar el rango de los valores flotantes. Pero no es una función predeterminada de Python, y se necesita la biblioteca NumPy para usarla.

El siguiente código de ejemplo demuestra cómo utilizar el método numpy.arange() para obtener la secuencia de valores de 0 a 1 con un tamaño de paso igual a 0.1.

import numpy as np

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

Producción :

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

Obtenga un rango de números de punto flotante usando la comprensión de listas en Python

La comprensión de listas es el método sintáctico para crear una nueva lista a partir de una lista existente en Python. Podemos generar el rango o secuencia de valores flotantes creando una nueva lista a partir de la secuencia de valores devueltos por el método range().

Dado que el método range() solo puede generar la secuencia de números enteros, tendremos que multiplicar o dividir cada valor de la secuencia por el valor flotante requerido para obtener la secuencia deseada. Dado que multiplicar un número entero, es decir, 3 con el valor flotante 0.1 devuelve 0.30000000000000004, es por eso que debe preferirse dividir el número entero con 10 para generar la secuencia de valores flotantes.

El siguiente código de ejemplo demuestra cómo obtener el rango o secuencia de valores flotantes en Python usando el método de comprensión de listas.

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

Producción :

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

Obtenga un rango de números de punto flotante usando la comprensión del generador en Python

La comprensión del generador es un enfoque sintáctico similar a la comprensión de listas que crea un objeto generador iterable en Python. Podemos acceder al nuevo valor desde el generador usando el método next() o iterar a través de toda la secuencia usando el bucle for.

El siguiente código de ejemplo demuestra cómo usar la comprensión del generador para obtener el rango de flotantes en Python.

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

Producción :

0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 

Obtenga un rango de números de punto flotante usando la función de generador en Python

Aunque la comprensión del generador es una forma concisa y más sencilla de obtener un objeto generador en Python, la función del generador es una forma reutilizable y mejor de obtener un rango de valores flotantes utilizando los valores start, stop y step de nuestra elección.

El siguiente código de ejemplo demuestra cómo crear una función generadora usando la palabra clave yield, similar a la función range() en 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)

Obtenga un rango de números de punto flotante usando el método numpy.linspace() en Python

El método numpy.linspace() como el método numpy.arange() devuelve la secuencia de valores desde el valor start hasta el valor stop. En lugar del argumento step, el método numpy.linspace() toma el argumento num, que especifica el número de valores a generar desde el valor start hasta el valor stop.

Por lo tanto, tendremos que proporcionar el número de valores num al método numpy.linspace(); la siguiente fórmula puede calcular el valor de num utilizando los valores start, stop y step.

num = (stop - start)/step

El siguiente código de ejemplo demuestra cómo utilizar numpy.linspace() para generar el rango de flotantes de 0 a 1 con el step igual a 0.1. El valor num para la secuencia requerida será (0 - 1)/0.1 = 10.

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

Producción :

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

El argumento endpoint especifica si se debe incluir el último valor de la secuencia o no, ya que la secuencia comienza desde 0 por defecto.

Artículo relacionado - Python Float