8

linspacePython在其标准库中是否有类似 matlab 的函数?

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

这是用 matlab 术语快速简单地定义 linspace

笔记

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

4

4 回答 4

12

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

您可能会发现为 Matlab 用户提供的 NumPy信息。

于 2012-09-08T21:02:26.770 回答
11

实现这一点的最简单方法是生成器函数:

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()方便地处理数值数组的函数和许多其他特性。

于 2012-09-08T21:02:38.797 回答
6

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

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)]
于 2012-09-08T21:08:24.420 回答
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)]
于 2016-05-19T17:53:36.097 回答