如何像在 MATLAB 中一样在 Python 中创建数字范围

How to create range of numbers in Python like in MATLAB

有没有什么方法可以像 MATLAB 一样使用简单的语法在 Python 中创建一个数字范围,即不使用循环。例如:

MATLAB: a = 1:0.5:10a = [1 1.5 2 2.5 3 3.5 .... 9.5 10]

import numpy as np
a = np.arange(1, 10, 0.5)
print (a)

Python 的内置 xrange 函数可以像这样生成整数:

xrange(start, stop, step)

但是xrange不能做花车。

Numpy 有 aranger_ 看起来像这样:

import numpy as np
print(np.arange(1, 3, .5))
# [ 1.   1.5  2.   2.5]
print(np.r_[1:3:.5])
# [ 1.   1.5  2.   2.5]

请注意,它与 matlab 略有不同,首先,与 matlab 相比,numpy 中停止和步进的顺序相反,其次,停止不包括在结果中。您还可以考虑使用 linspace 当您使用浮点数时,它通常比 arange 更受欢迎,因为 num 可以比 step:[=19= 更精确地定义]

print(np.linspace(1, 3, num=5))
# [ 1.   1.5  2.   2.5  3. ]

print(np.linspace(1, 3, num=4, endpoint=False))
# [ 1.   1.5  2.   2.5]

正如其他人指出的那样,np.arange 让您最接近您习惯的 matlab。但是,np.arange 不包括结束点。您在自己的回答中提出的解决方案可能会导致错误的结果(请参阅我的评论)。

然而,这将始终有效:

start = 0
stop = 3
step = 0.5
a = np.arange(start, stop+step, step)

进一步阅读:特别是如果您是一位经验丰富的 matlab 用户,这个 guide/cheat sheet 可能会很有趣:http://wiki.scipy.org/NumPy_for_Matlab_Users