Python的std lib中是否有linspace函数?

时间:2012-09-08 20:59:56

标签: python matlab

Python的标准库中是否有像matlab linspace这样的函数?

如果没有,是否有一种简单的方法可以在不安装外部包的情况下实现它?

这是一个快速简便的definition of linspace matlab术语。

注意

我不需要链接定义的“矢量结果”,列表也可以。

4 个答案:

答案 0 :(得分:9)

不,它没有。你可以编写自己的(并不困难),但是如果你使用Python来实现matlab的某些功能,那么你肯定要安装numpy,其中numpy.linspace

您可能会发现NumPy for Matlab users信息丰富。

答案 1 :(得分:9)

实现此功能的最简单方法是生成器函数:

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

使用示例:

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

那就是说,你一定要考虑使用NumPy,它提供了numpy.linspace()函数和许多其他功能,可以方便地使用数值数组。

答案 2 :(得分:5)

您可以定义一个函数来执行此操作:

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)]

答案 3 :(得分:2)

只要间距> 1,这是Python等效于以下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)]