小編寫(xiě)這篇文章的主要目的,主要是給大家介紹關(guān)于Python numpy和matlab區(qū)別的介紹,具體區(qū)別,下文給大家詳細(xì)的解答。
numpy和matlab的幾點(diǎn)差異
Python numpy和matlab都是便捷靈活的科學(xué)計(jì)算語(yǔ)言,兩者具有很多相似之處,但也有一些混淆的地方,這里假定你熟悉matlab,但不了解numpy,記錄幾個(gè)numpy實(shí)例:
1、Numpy數(shù)組索引指定開(kāi)始和結(jié)束時(shí)
不包括結(jié)束,也即下面的b和c是一樣的。
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) b=a[:2,1:2] c=a[:2,1]
2、Numpy.ndarray切片的修改會(huì)引起原矩陣的修改
這與matlab不同。
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) b=a[:2,1:3] #[[2 3] #[6 7]] print(a[0,1])#Prints"2" b[0,0]=77#b[0,0]is the same piece of data as a[0,1] print(a[0,1])#Prints"77"
這與matlab不同。
a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) b=a[:2,1:3] #[[2 3] #[6 7]] print(a[0,1])#Prints"2" b[0,0]=77#b[0,0]is the same piece of data as a[0,1] print(a[0,1])#Prints"77"
3、numpy使用切片索引(例如1:2)不會(huì)產(chǎn)生降維
而使用整數(shù)索引(例如1)會(huì)產(chǎn)生降維。
import numpy as np a=np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) row_r1=a[1,:]#Rank 1 view of the second row of a row_r2=a[1:2,:]#Rank 2 view of the second row of a print(row_r1,row_r1.shape)#Prints"[5 6 7 8](4,)" print(row_r2,row_r2.shape)#Prints"[[5 6 7 8]](1,4)" col_r1=a[:,1] col_r2=a[:,1:2] print(col_r1,col_r1.shape)#Prints"[2 6 10](3,)" print(col_r2,col_r2.shape)#Prints"[[2] #[6] #[10]](3,1)"
4、不同于matlab
numpy的轉(zhuǎn)置對(duì)于1維數(shù)組的操作不發(fā)生變化。
v=np.array([1,2,3]) print(v)#Prints"[1 2 3]" print(v.T)#Prints"[1 2 3]"
5、不同matlab對(duì)于矩陣預(yù)算要求大小一致
Numpy broadcasting直接支持操作(加減乘除等),要求前一個(gè)矩陣的最后一維度大小和待操作矩陣的大小相同。
x=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]) v=np.array([1,0,1]) y=x+v#Add v to each row of x using broadcasting print(y)#Prints"[[2 2 4] #[5 5 7] #[8 8 10]
python與matlab的優(yōu)點(diǎn)和缺點(diǎn)
如果想咨詢(xún)我怎么選,我可以提議倆個(gè)都是選擇。很多人都喜歡拿python和matlab對(duì)比分析,隨后得到哪個(gè)比較好的觀點(diǎn)。其實(shí)吧,能用就可以了。
假如是學(xué)生們,或者是科研人員,例如探討信號(hào)分析,那么用matlab比較好,有較多現(xiàn)有輔助工具和之前的人的成效可以參考。假如是產(chǎn)品化項(xiàng)目,那么python比較好,可以做web后臺(tái),可以打包成應(yīng)用程序,效率相對(duì)matlab也要高那么一點(diǎn)點(diǎn)。假如是信號(hào)、數(shù)據(jù)方面的工程人員,建議還是兩個(gè)都掌握吧,也不復(fù)雜,都是腳本式的語(yǔ)言,比C++什么的易學(xué)多了。
下面從兩者各自的應(yīng)用做個(gè)對(duì)比分析。
1、python的競(jìng)爭(zhēng)優(yōu)勢(shì)
Python相較于Matlab最大的優(yōu)點(diǎn):完全免費(fèi)。我國(guó)或許不是很在意這些,不過(guò)在海外是一個(gè)很重要問(wèn)題。
Python次大的優(yōu)勢(shì):開(kāi)源。你可以大量更改科學(xué)計(jì)算的算法細(xì)節(jié)。
可移植性,Matlab必然不如Python。但你主要做Research,這方面需求應(yīng)當(dāng)不高。
第三方生態(tài),Matlab不如Python。例如3D的繪圖工具包,例如GUI,例如更方便的并行,使用GPU,F(xiàn)unctional等等。長(zhǎng)期來(lái)看,Python的科學(xué)計(jì)算生態(tài)會(huì)比Matlab好。
語(yǔ)言更加優(yōu)美。另外如果有一定的OOP需求,構(gòu)建較大一點(diǎn)的科學(xué)計(jì)算系統(tǒng),直接用Python比用Matlab混合的方案肯定要簡(jiǎn)潔不少。
python作為一種通用編程語(yǔ)言,可以做做Web,搞個(gè)爬蟲(chóng),編個(gè)腳本,寫(xiě)個(gè)小工具用途很廣泛。
2、matlab的競(jìng)爭(zhēng)優(yōu)勢(shì)
學(xué)術(shù)界大量使用matlab做仿真,做研究的話容易找到代碼參考;
語(yǔ)法相對(duì)python更靈活一些,matlab寫(xiě)程序基本不用套路,所謂老夫擼matlab就一個(gè)字,干;
有simulink。有人說(shuō)simulink沒(méi)什么用,其實(shí)還是挺有用的,例如通信建模,另外simulink可以生產(chǎn)DSP或者是FPGA代碼,有的時(shí)候很有用。
3、兩者的區(qū)別
python是一種通用語(yǔ)言,而matlab更像是一個(gè)平臺(tái)。
4、怎樣選擇
如果做探討,可以matlab為主;如果做產(chǎn)品,可以python為主。當(dāng)然也有matlab做成產(chǎn)品的,打包成exe什么的都不是事。
以上為個(gè)人經(jīng)驗(yàn),希望可以給各位讀者帶來(lái)幫助
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/127789.html