有没有办法在Python中像MATLAB一样使用简单的语法,即不使用循环来创建一个数字范围。例如:MATLAB:a = 1:0.5:10给予a = [1 1.5 2 2.5 3 3.5 .... 9.5 10]
a = 1:0.5:10
a = [1 1.5 2 2.5 3 3.5 .... 9.5 10]
sczxawaw1#
正如其他人所指出的,np.arange让你最接近你从matlab中习惯的东西,然而,np.arange排除了端点,你在自己的答案中提出的解决方案可能会导致错误的结果(见我的评论)。但是,这将始终有效:
np.arange
start = 0 stop = 3 step = 0.5 a = np.arange(start, stop+step, step)
进一步阅读:特别是如果你是一个有经验的matlab用户,这个指南/备忘单可能会很有趣:Link
dced5bon2#
Numpy有arange和r_,看起来像这样:
arange
r_
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有一点不同,首先numpy中stop和step的顺序和matlab相反,其次stop不包含在结果中。你也可以考虑使用linspace,当你使用浮点数时,linspace比arange更好,因为num比step定义得更精确:
linspace
num
step
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]
1zmg4dgp3#
import numpy as np a = np.arange(1, 10, 0.5) print (a)
roejwanj4#
Python内置的xrange函数可以像这样生成整数:
xrange
xrange(start, stop, step)
但是xrange不能执行浮点运算。
4条答案
按热度按时间sczxawaw1#
正如其他人所指出的,
np.arange
让你最接近你从matlab中习惯的东西,然而,np.arange
排除了端点,你在自己的答案中提出的解决方案可能会导致错误的结果(见我的评论)。但是,这将始终有效:
进一步阅读:特别是如果你是一个有经验的matlab用户,这个指南/备忘单可能会很有趣:Link
dced5bon2#
Numpy有
arange
和r_
,看起来像这样:注意它和matlab有一点不同,首先numpy中stop和step的顺序和matlab相反,其次stop不包含在结果中。你也可以考虑使用
linspace
,当你使用浮点数时,linspace
比arange
更好,因为num
比step
定义得更精确:或
1zmg4dgp3#
roejwanj4#
Python内置的
xrange
函数可以像这样生成整数:但是
xrange
不能执行浮点运算。