[英]Matlab code convert into Python
我從事Matlab編程已有多年了,最近有人提出將Python作為未來的建議。 有興趣的我開始學習它。 我不想將兩者進行比較,目前正處於Python的學習階段。 由於我有很多用Matlab編寫的代碼(更重要的是在Matlab中講),我認為Matlab中幾乎所有的命令都會有一個等效的命令。 我們使用
k = 1:n;
Matlab中有很多。 但是在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網站 ,嘗試在那里提供語法,但是再次:
>>> 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中如此復雜? 我什至使用此工具將.m代碼轉換為.py代碼,收效甚微。
該錯誤來自於函數調用中不匹配的方括號。 在文檔中,方括號僅表示某些可選內容,不包括在調用中。 還要注意,該功能是range命令中python固有的功能,您無需使用numpy。
Matlab:
n=5;
k=1:n
蟒蛇:
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/
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]
該鏈接可能對Matlab用戶有幫助。
在numpy中有幾種方法可以做到這一點。 這是最簡單的:
import numpy as np
n = 5
k = np.r_[1:n+1]
另一種方法是從0開始加1,但這有點慢(在我的系統上,n = 1000000,它慢了約1.5毫秒):
import numpy as np
n = 5
k = np.r_[:n]+1
請注意,如果您從0開始,則可以省略初始的零。
您可以使用arange做類似的事情:
import numpy as np
n = 5
k = np.arange(n)+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.