如何在MATLAB中创建Python的数字范围

efi*_*ida 10 python matlab range

有没有办法用Python在MATLAB中创建一系列数字,使用简单的语法,即不使用循环.例如:

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

hit*_*tzg 7

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

然而,这将始终有效:

start = 0
stop = 3
step = 0.5
a = np.arange(start, stop+step, step)
Run Code Online (Sandbox Code Playgroud)

进一步阅读:特别是如果您是一位经验丰富的matlab用户,本指南/备忘单可能很有趣:http: //wiki.scipy.org/NumPy_for_Matlab_Users


Bi *_*ico 5

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]
Run Code Online (Sandbox Code Playgroud)

请注意,它与matlab略有不同,首先,与matlab相比,stop和step的顺序在numpy中相反,而第二个stop不包含在结果中.您可能还会考虑使用linspace它,arange而不是在使用浮点数时,因为num可以比step以下方法更精确地定义它:

print(np.linspace(1, 3, num=5))
# [ 1.   1.5  2.   2.5  3. ]
Run Code Online (Sandbox Code Playgroud)

要么

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