我有一个类似于this的问题,可能要简单得多:
我们使用
k = 1:n;
但是在Python中我很难让这个简单的东西工作。我试着使用arange,但是从来没有真正意识到错误是什么:
>>> 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代码,但效果甚微。
在@mskimm的帖子后编辑:谢谢!一个相关的问题。在Matlab中编写类似于以下内容的代码:
n = 100;
k = 1:n;
z = (n-k)./(n-k-1);
plot(k,log(z))
我最后用Python写了这个:
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
# test code to check the shape of a curve
n = 100
k = np.arange(1,n+1)
z = (n - k) / (n - k - 1)
fig = plt.figure()
ax = fig.gca()
plt.plot(k, np.log(z))
plt.show()
这是正确的方法吗?还是有更好的方法来做plot()
?
2条答案
按热度按时间oaxa6hgo1#
欢迎来到Numpy!
1:n
和arange(1, n+1, 1)
是一样的,其中第一个1
是开始,n+1
是停止,最后一个1
是步进,注意Numpy索引是从0
开始的,而Matlab是从1
开始的,所以我认为更适合于数组索引。
[]
表示可选值。如果不给出显式值,则start
为0
,step
为1
。您可以使用This page帮助Matlab用户。
开始学习Numpy并熟悉Matlab IDE的Matlab用户的评论。
我建议使用Spyder或IPython Notebook。
wgeznvg72#
对于第一个问题,在numpy中最简单的方法是:
以及:
第一种方法稍微快一点。
For your second question, I see you already found out that you can leave out most of it. There is one additional thing you can do. By default, matplotlib does not update the plot until you do "plt.show()". However, you can change this by doing something like this:
您只需在第一次启动时执行一次此操作,并且可以在以后的某个时间点将其设置为False。
您也可以通过打开matplotlibrc文件并更改以下内容来配置matplotlib,使其在默认情况下执行此操作:
到
但是,您最好使用IPython,如果您使用"ipython--pylab"运行它,它可以处理所有这些问题: