我已经在Matlab编写了很多年,最近很多人将Python作为未来推荐。感兴趣我开始学习它。我不想比较这两个,目前我正处于Python的学习阶段。由于我在Matlab中编写了很多代码(更重要的是在Matlab中进行了讨论),我认为对于“几乎”来说,会有一个相同的命令。 Matlab中的所有命令。我们使用
k = 1:n;
在Matlab中有很多。但是在Python中我只是很难让这个简单的事情发挥作用。我尝试使用范围,但从未真正意识到错误是什么:
>>> arange(1,]10[,1,])
File "<stdin>", line 1
arange(1,]10[,1,])
^
SyntaxError: invalid syntax
>>> arange(1,10[,1,])
File "<stdin>", line 1
arange(1,10[,1,])
^
SyntaxError: invalid syntax
>>> arange([1,]10[,1,])
File "<stdin>", line 1
arange([1,]10[,1,])
^
SyntaxError: invalid syntax
>>> np.arange
<built-in function arange>
>>> arange([1], 10[,1])
File "<stdin>", line 1
arange([1], 10[,1])
^
SyntaxError: invalid syntax
我去了numpy website并尝试在那里提供语法,但是又一次:
>>> import numpy as np
>>> np.arange([1],10[,1],dtype=None)
File "<stdin>", line 1
np.arange([1],10[,1],dtype=None)
^
SyntaxError: invalid syntax
我不会写这篇文章只是为了澄清这类事情,但我的观点是为什么这个最简单的Matlab命令在Python中如此复杂?我甚至使用this tool将.m代码转换为.py代码,效果甚微。
答案 0 :(得分:0)
错误来自函数调用中不匹配的方括号。在文档中,方括号仅表示某些内容是可选的,它们不包含在调用中。另请注意,此功能在range命令中是python原生的,您不需要使用numpy。
Matlab的:
n=5;
k=1:n
的Python:
n=5
k=range(1,n+1)
使用numpy:
import numpy as np
n=5
k=np.arange(1,n+1)
我建议安装ipython。作为已经从matlab迁移到python的人,这是理解语法的重要工具,而不会反复运行脚本。 http://ipython.org/
答案 1 :(得分:0)
k = 1:n;
是等效的
k = range(1, n+1)
或
k = np.arange(1, n+1)
请注意,Python的索引是从0
而不是1
开始的。如果使用k
进行数组索引,则应使用
k = np.range(n) # which is [0, 1, ..., n-1]
此link可以帮助Matlab用户。
答案 2 :(得分:0)
有几种方法可以在numpy中执行此操作。最简单的是:
import numpy as np
n = 5
k = np.r_[1:n+1]
另一种方法是从0开始并加1,但这稍微慢一些(在我的系统上n = 1000000时慢了大约1.5 ms):
import numpy as np
n = 5
k = np.r_[:n]+1
请注意,如果从0开始,则可以不使用初始零。
您可以使用范围执行类似操作:
import numpy as np
n = 5
k = np.arange(n)+1