¿Python tiene una función de linspace en su estd lib?

¿Tiene Python una función como el linspace de matlab en su biblioteca estándar?

Si no es así, ¿hay una manera fácil de implementarlo sin instalar un paquete externo?

Aquí hay una definición rápida y fácil de linspace en términos matlab.

Nota

No necesito un “resultado vectorial” como se define en el enlace, una lista funcionará bien.

No, no lo hace. Puedes escribir el tuyo (lo que no es difícil), pero si estás usando Python para cumplir con algunas de las funciones de matlab, entonces definitivamente quieres instalar numpy , que tiene numpy.linspace .

Puede encontrar NumPy para usuarios de Matlab informativo.

La forma más fácil de implementar esto es una función de generador:

 from __future__ import division def linspace(start, stop, n): if n == 1: yield stop return h = (stop - start) / (n - 1) for i in range(n): yield start + h * i 

Ejemplo de uso:

 >>> list(linspace(1, 3, 5)) [1.0, 1.5, 2.0, 2.5, 3.0] 

Dicho esto, definitivamente debería considerar el uso de NumPy, que proporciona la función numpy.linspace() y muchas otras características para trabajar de manera conveniente con matrices numéricas.

Puedes definir una función para hacer esto:

 def linspace(a, b, n=100): if n < 2: return b diff = (float(b) - a)/(n - 1) return [diff * i + a for i in range(n)] 

Siempre que el espaciado sea> 1, este es el equivalente de Python a la siguiente llamada a la función MATLAB: linspace(start,stop,spacing)

 start = 5 stop = 6 spacing = int(11) linspace = [start + float(x)/(spacing-1)*(stop-start) for x in range(spacing)]