如何像在 MATLAB 中一样在 Python 中创建数字范围
How to create range of numbers in Python like in MATLAB
有没有什么方法可以像 MATLAB 一样使用简单的语法在 Python 中创建一个数字范围,即不使用循环。例如:
MATLAB:
a = 1:0.5:10
给
a = [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 有 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 略有不同,首先,与 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
有没有什么方法可以像 MATLAB 一样使用简单的语法在 Python 中创建一个数字范围,即不使用循环。例如:
MATLAB:
a = 1:0.5:10
给
a = [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 有 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 略有不同,首先,与 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