用python做科學計算
1. 求利用python來科學計算網路邊的(介數)的編程語句
#encoding=utf-8
importtime
fromoperatorimportitemgetter
#DatainBC.txt:
#a b
#a h
#b c
#b h
#h i
#h g
#g i
#g f
#c f
#c i
#c d
#d f
#d e
#f e
classGraph:
def__init__(self):
self.Graph=defaultdict(set)
self.NodesNum=0
defMakeLink(self,filename,separator):
withopen(filename,'r')asgraphfile:
forlineingraphfile:
nodeA,nodeB=line.strip().split(separator)
self.Graph[nodeA].add(nodeB)
self.Graph[nodeB].add(nodeA)
self.NodesNum=len(self.Graph)
defBetweennessCentrality(self):
betweenness=dict.fromkeys(self.Graph,0.0)
forsinself.Graph:
#1.
S=[]
P={}
forvinself.Graph:
P[v]=[]
Sigma=dict.fromkeys(self.Graph,0.0)
Sigma[s]=1.0
D={}
D[s]=0
Q=[s]
#
whileQ:
v=Q.pop(0)
S.append(v)
Dv=D[v]
forwinself.Graph[v]:
#wfoundforthefirsttime?
ifwnotinD:
Q.append(w)
D[w]=D[v]+1
#shortestpathtowviav
ifD[w]==D[v]+1:
Sigma[w]+=Sigma[v]
P[w].append(v)
#2.sumallpair-dependenciesofnodes
delta=dict.fromkeys(self.Graph,0.0)
#Sreturnsverticesinorderofnon-increasingdistancefroms
whileS:
w=S.pop()
coeff=(1.0+delta[w])/Sigma[w]
forvinP[w]:
delta[v]+=Sigma[v]*coeff
ifw!=s:
betweenness[w]+=delta[w]
scale=1.0/((self.NodesNum-1)*(self.NodesNum-2))
forvinbetweenness:
betweenness[v]*=scale
betweenness=[(node,bc)fornode,bcinbetweenness.iteritems()]
betweenness=sorted(betweenness,key=itemgetter(1),reverse=True)
returnbetweenness
if__name__=='__main__':
separator=' '
file='C:\Users\Administrator\Desktop\BC.txt'
begin=time.time()
myGraph=Graph()
myGraph.MakeLink(file,separator)
printmyGraph.BetweennessCentrality()
print'Time:',time.time()-begin,'seconds'
2. 為什麼Python適合科學計算
python做科學計算的特點:
1. 科學庫很全。
科學庫:numpy,scipy。作圖:matplotlib。並行:mpi4py。調試:pdb。
2. 效率高。
如果你能學好numpy(array特性,f2py),那麼你代碼執行效率不會比fortran,C差太多。但如果你用不好array,那樣寫出來的程序效率就只能呵呵了。所以入門後,請一定花足夠多的時間去了解numpy的array類。
3. 易於調試。
pdb是我見過最好的調試工具,沒有之一。直接在程序斷點處給你一個截面,這只有文本解釋語言才能辦到。毫不誇張的說,你用python開發程序只要fortran的1/10時間。
4. 其他。
它豐富而且統一,不像C++的庫那麼雜(好比linux的各種發行版),python學好numpy就可以做科學計算了。python的第三方庫很全,但是不雜。python基於類的語言特性讓它比起fortran等更加容易規模化開發。
python和老牌科學計算語言fortran相比,有著眾多的優勢,如果能用f2py接合兩者,那是極好的。
3. 用python做科學計算用哪個發行版比較好
Python(x, y)沒有64位的版本,開數組開大了就Memory Error了。 用過Enthought Canopy一段時間,感覺界面看上去比python(x,y)里的Spyder洋氣一些
4. python的科學計算有什麼用
Python用在科學計算領域有兩大好處:
強大的膠水功能,可以粘合其他的第三方庫,處理任何碰到的問題;
批量處理的功能,省去很多時間,提高工作效率;
補充知識:
Python是一種面向對象的、動態的程序設計語言,具有非常簡潔而清晰的語法,既可以用於快速開發程序腳本,也可以用於開發大規模的軟體,特別適合於完成各種高層任務;
隨著NumPy、SciPy、matplotlib、ETS等眾多程序庫的開發,Python越來越適合於做科學計算。與科學計算領域最流行的商業軟體MATLAB相比,Python是一門真正的通用程序設計語言,比MATLAB所採用的腳本語言的應用范圍更廣泛,有更多程序庫的支持,適用於Windows和Linux等多種平台,完全免費並且開放源碼。雖然MATLAB中的某些高級功能目前還無法替代,但是對於基礎性、前瞻性的科研工作和應用系統的開發,完全可以用Python來完成。
5. 怎樣搭建基於 Python 的科學計算,數據處理環境
python 的科學計算模塊有numpy,scipy,畫圖的有mathplotlib。
在linux下軟體倉庫裡面應該都有;在windows下有些python IDL 裡面會集成的有,可以在網上搜一下。
也有相關的書籍介紹用python做科學計算。
6. python的科學計算和plot功能可能追上或者取代matlab嗎
說起科學計算,首先會被提到的可能是MATLAB。然而除了MATLAB的一些專業性很強的工具箱還無法替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴展庫。和MATLAB相比,用Python做科學計算有如下優點:
● 首先,MATLAB是一款商用軟體,並且價格不菲。而Python完全免費,眾多開源的科學計算庫都提供了Python的調用介面。用戶可以在任何計算機上免費安裝Python及其絕大多數擴展庫。
● 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程序設計語言。它能讓用戶編寫出更易讀、易維護的代碼。
● 最後,MATLAB主要專注於工程和科學計算。然而即使在計算領域,也經常會遇到文件管理、界面設計、網路通信等各種需求。而Python有著豐富的擴展庫,可以輕易完成各種高級任務,開發者可以用Python實現完整應用程序所需的各種功能。
7. 用python做科學計算用哪個發行版比較好
Python(x, y)沒有64位的版本,開數組開大了就Memory Error了。
用過Enthought Canopy一段時間,感覺界面看上去比python(x,y)里的Spyder洋氣一些,但是有個缺點讓我不能忍,就是無法看到程序中各種變數。想用python做科學計算,但是無法得知程序運行期間各種變數的變化情況,就像MATLAB缺少了Workspace一樣,怎麼忍,而且我查過,這個功能EP確實是還沒有,我只好用回Spyder了(Spyder自帶variable explorer),其他詳細的功能我也沒有對比過,感覺都差不多,其他的IDE我也沒用過,所以,僅供參考啦。話說EP的各種包清晰明了又可以隨時更新,這點比(x,y)強太多,不過,其實不更新也根本沒問題吧。
8. 為什麼Python適合科學計算
原因大約有以下幾點:
1. Python的語法簡單,這對很少接觸編程的搞學術老師的福音。
2. Python相較於其他語言有更豐富的模塊,比如科學計算的numpy。
3. Python越來越流行。
Python(英語發音:/ˈpaɪθən/), 是一種面向對象、解釋型計算機程序設計語言,由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年,Python 源代碼同樣遵循 GPL(GNU General Public License)協議。
Python語法簡潔而清晰,具有豐富和強大的類庫。它常被昵稱為膠水語言,能夠把用其他語言製作的各種模塊(尤其是C/C++)很輕松地聯結在一起。
常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而後封裝為Python可以調用的擴展類庫。需要注意的是在您使用擴展類庫時可能需要考慮平台問題,某些可能不提供跨平台的實現。
它常被昵稱為膠水語言,它能夠很輕松的把用其他語言製作的各種模塊(尤其是C/C++)輕松地聯結在一起。常見的一種應用情形是,使用python快速生成程序的原型(有時甚至是程序的最終界面),然後對其中有特別要求的部分,用更合適的語言改寫。比如3D游戲中的圖形渲染模塊,速度要求非常高,就可以用C++重寫。
9. 如何快速優雅的使用python的科學計算庫
Python是一種強大的編程語言,其提供了很多用於科學計算的模塊,常見的包括numpy、scipy、pandas和matplotlib。要利用Python進行科學計算,就需要一一安裝所需的模塊,而這些模塊可能又依賴於其它的軟體包或庫,因而安裝和使用起來相對麻煩。幸好有人專門在做這一類事情,將科學計算所需要的模塊都編譯好,然後打包以發行版的形式供用戶使用,Anaconda就是其中一個常用的科學計算發行版。
我們從網站(鏈接1)下載的默認的Anaconda版本已經內置了很多庫(鏈接2),包括numpy等。
盡管Anaconda已經自帶了大量科學計算中的常用模塊,可以直接使用。有時需要安裝一些其他python模塊。比如:
conda
anaconda自帶了conda命令用於安裝與更新模塊,比如:
1 conda install scipy2 conda update scipy
安裝完我們需要的庫之後,如果我們採用隨Anaconda一起安裝的spyder作為開發環境,那麼本文就結束了o_o
事實上是,我一直在用pycharm作為python開發的IDE。寫本文之前的5個小時內我一直在嘗試各種不同方法讓我電腦里的pycharm可以成功安裝好numpy庫,瀏覽完各大中外網站介紹的方法後讓我意識到這是一個很煩的問題。採用包括但不限於pip命令、安裝相應的各種版本whl文件都因為各種各樣的原因失效。極其失望的我嘗試了安裝了Anaconda,在這個界面(鏈接3)我發現了
「How to set up an IDE to use Anaconda」
它裡面介紹了幾種軟體使用Anaconda的方法,包括Pycharm。
Spyder
Python Tools for Visual Studio (PTVS)
PyCharm
Eclipse & PyDev
Wing IDE
Ninja IDE
因此,配置完pycharm調用Anaconda後,我們在可以快樂的在pycharm裡面調用各種科學計算庫啦。
具體步驟如下:
1.安裝Anaconda
2.安裝Pycharm
3.在Pycharm的Files>>settings>>Project Interpreter>>Add local 裡面添加Anaconda python.exe. 應用之後就可以調用各種Anaconda的庫啦。
有點曲線救國的味道