鍍金池/ 教程/ Python/ 為計(jì)算做準(zhǔn)備
標(biāo)準(zhǔn)庫(kù) (4)
如何成為 Python 高手
標(biāo)準(zhǔn)庫(kù) (6)
標(biāo)準(zhǔn)庫(kù) (3)
類(2)
Pandas 使用 (2)
xml
用 tornado 做網(wǎng)站 (5)
文件(1)
練習(xí)
列表(3)
從小工到專家
除法
錯(cuò)誤和異常 (2)
函數(shù)(1)
用 tornado 做網(wǎng)站 (7)
為做網(wǎng)站而準(zhǔn)備
函數(shù)練習(xí)
標(biāo)準(zhǔn)庫(kù) (8)
Pandas 使用 (1)
回顧 list 和 str
字典(1)
用 tornado 做網(wǎng)站 (3)
字符串(1)
函數(shù)(2)
寫(xiě)一個(gè)簡(jiǎn)單的程序
將數(shù)據(jù)存入文件
語(yǔ)句(5)
SQLite 數(shù)據(jù)庫(kù)
集成開(kāi)發(fā)環(huán)境(IDE)
集合(1)
類(1)
用 tornado 做網(wǎng)站 (6)
用 tornado 做網(wǎng)站 (2)
自省
語(yǔ)句(4)
錯(cuò)誤和異常 (1)
用 tornado 做網(wǎng)站 (4)
集合(2)
列表(1)
標(biāo)準(zhǔn)庫(kù) (1)
生成器
mysql 數(shù)據(jù)庫(kù) (1)
第三方庫(kù)
實(shí)戰(zhàn)
運(yùn)算符
類(3)
字典(2)
語(yǔ)句(1)
數(shù)和四則運(yùn)算
語(yǔ)句(2)
文件(2)
MySQL 數(shù)據(jù)庫(kù) (2)
電子表格
迭代器
mongodb 數(shù)據(jù)庫(kù) (1)
特殊方法 (2)
特殊方法 (1)
字符編碼
編寫(xiě)模塊
用 tornado 做網(wǎng)站 (1)
標(biāo)準(zhǔn)庫(kù) (5)
函數(shù)(4)
類(5)
字符串(2)
關(guān)于 Python 的故事
函數(shù)(3)
字符串(4)
處理股票數(shù)據(jù)
常用數(shù)學(xué)函數(shù)和運(yùn)算優(yōu)先級(jí)
字符串(3)
為計(jì)算做準(zhǔn)備
多態(tài)和封裝
類(4)
迭代
語(yǔ)句(3)
錯(cuò)誤和異常 (3)
分析 Hello
Python 安裝
標(biāo)準(zhǔn)庫(kù) (2)
列表(2)
元組

為計(jì)算做準(zhǔn)備

閑談

計(jì)算機(jī)姑娘是擅長(zhǎng)進(jìn)行科學(xué)計(jì)算的,本來(lái)她就是做這個(gè)的,只不過(guò)后來(lái)人們讓她處理了很多文字內(nèi)容罷了,乃至于現(xiàn)在有一些人認(rèn)為她是用來(lái)打字寫(xiě)文章的(變成打字機(jī)了),忘記了她最擅長(zhǎng)的計(jì)算。

每種編程語(yǔ)言都能用來(lái)做計(jì)算,區(qū)別在于編程過(guò)程中,是否有足夠的工具包供給。比如用匯編,就得自己多勞動(dòng),如果用 Fortran,就方便得多了。不知道讀者是否聽(tīng)說(shuō)過(guò) Fortran,貌似古老,現(xiàn)在仍被使用。(以下引文均來(lái)自維基百科)

Fortran 語(yǔ)言是為了滿足數(shù)值計(jì)算的需求而發(fā)展出來(lái)的。1953 年 12 月,IBM 公司工程師約翰·巴科斯(J. Backus)因深深體會(huì)編寫(xiě)程序很困難,而寫(xiě)了一份備忘錄給董事長(zhǎng)斯伯特·赫德(Cuthbert Hurd),建議論為 IBM704 系統(tǒng)設(shè)計(jì)全新的電腦語(yǔ)言以提升開(kāi)發(fā)效率。當(dāng)時(shí) IBM 公司的顧問(wèn)馮·諾伊曼強(qiáng)烈反對(duì),因?yàn)樗握J(rèn)為不切實(shí)際而且根本不必要。但赫德批準(zhǔn)了這項(xiàng)計(jì)劃。1957 年,IBM 公司開(kāi)發(fā)出第一套 FORTRAN 語(yǔ)言,在 IBM704 電腦上運(yùn)作。歷史上第一支 FORTRAN 程式在馬里蘭州的西屋貝地斯核電廠實(shí)驗(yàn)室。1957 年 4 月 20 日星期五的下午,一位 IBM 軟件工程師決定在電廠內(nèi)編譯第一支 FORTRAN 程式,當(dāng)程式碼輸入后,經(jīng)過(guò)編譯,印表機(jī)列出一行訊息:“原始程式錯(cuò)誤……右側(cè)括號(hào)后面沒(méi)有逗號(hào)”,這讓現(xiàn)場(chǎng)人員都感到訝異,修正這個(gè)錯(cuò)誤后,印表機(jī)輸出了正確結(jié)果。而西屋電器公司因此意外地成為 FORTRAN 的第一個(gè)商業(yè)用戶。1958 年推出 FORTRAN Ⅱ,幾年后又推出 FORTRAN Ⅲ,1962 年推出 FORTRAN Ⅳ 后,開(kāi)始廣泛被使用。目前最新版是 Fortran 2008。

還有一個(gè)廣為應(yīng)用的不得不說(shuō),那就是 matlab,一直以來(lái)被人稱贊。

MATLAB(矩陣實(shí)驗(yàn)室)是 MATrix LABoratory 的縮寫(xiě),是一款由美國(guó) The MathWorks 公司出品的商業(yè)數(shù)學(xué)軟件。MATLAB 是一種用于算法開(kāi)發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境。除了矩陣運(yùn)算、繪制函數(shù)/數(shù)據(jù)圖像等常用功能外,MATLAB 還可以用來(lái)創(chuàng)建用戶界面及與調(diào)用其它語(yǔ)言(包括 C,C++,Java,Python 和 FORTRAN)編寫(xiě)的程序。

但是,它是收費(fèi)的商業(yè)軟件,雖然在某國(guó)這個(gè)無(wú)所謂。

還有 R 語(yǔ)言,也是在計(jì)算領(lǐng)域被多多使用的。

R 語(yǔ)言,一種自由軟件程式語(yǔ)言與操作環(huán)境,主要用于統(tǒng)計(jì)分析、繪圖、數(shù)據(jù)挖掘。R 本來(lái)是由來(lái)自新西蘭奧克蘭大學(xué)的 Ross Ihaka 和 Robert Gentleman 開(kāi)發(fā)(也因此稱為 R),現(xiàn)在由“R 開(kāi)發(fā)核心團(tuán)隊(duì)”負(fù)責(zé)開(kāi)發(fā)。R 是基于 S 語(yǔ)言的一個(gè) GNU 計(jì)劃項(xiàng)目,所以也可以當(dāng)作 S 語(yǔ)言的一種實(shí)現(xiàn),通常用 S 語(yǔ)言編寫(xiě)的代碼都可以不作修改的在 R 環(huán)境下運(yùn)行。R 的語(yǔ)法是來(lái)自 Scheme。

最后要說(shuō)的就是 Python,近幾年使用 Python 的領(lǐng)域不斷擴(kuò)張,包括在科學(xué)計(jì)算領(lǐng)域,它已經(jīng)成為了一種趨勢(shì)。在這個(gè)過(guò)程中,雖然有不少人詬病 Python 的這個(gè)慢那個(gè)解釋動(dòng)態(tài)語(yǔ)言之類(這種說(shuō)法是值得討論的),但是,依然無(wú)法阻擋 Python 在科學(xué)計(jì)算領(lǐng)域大行其道。之所以這樣,就是因?yàn)樗?Python。

  • 開(kāi)源,就這一條就已經(jīng)足夠了,一定要用開(kāi)源的東西。至于為什么,本教程前面都闡述過(guò)了。
  • 因?yàn)殚_(kāi)源,所以有非常棒的社區(qū),里面有相當(dāng)多支持科學(xué)計(jì)算的庫(kù),不用還等待何時(shí)?
  • 簡(jiǎn)單易學(xué),這點(diǎn)對(duì)那些不是專業(yè)程序員來(lái)講非常重要。我就接觸到一些搞天文學(xué)和生物學(xué)的研究者,他們正在使用 Python 進(jìn)行計(jì)算。
  • 在科學(xué)計(jì)算上如果用了 Python,能夠讓數(shù)據(jù)跟其它的比如 web 無(wú)縫對(duì)接,這不是很好的嗎?

當(dāng)然,最重要一點(diǎn),就是本教程是講 Python 的,所以,在科學(xué)計(jì)算這塊肯定不會(huì)講 Fortran 或者 R,一定得是 Python。

安裝

如果讀者使用 Ubuntu 或者 Debian,可以這樣來(lái)安裝:

sudo apt-get install Python-numpy Python-scipy Python-matplotlib ipython ipython-notebook Python-pandas Python-sympy Python-nose

一股腦把可能用上的都先裝上。在安裝的時(shí)候,如果需要其它的依賴,你會(huì)明顯看到的。

如果是別的系統(tǒng),比如 windows 類,請(qǐng)自己網(wǎng)上查找安裝方法吧,這里內(nèi)容不少,最權(quán)威的是看官方網(wǎng)站列出的安裝:http://www.scipy.org/install.html

基本操作

在科學(xué)計(jì)算中,業(yè)界比較喜歡使用 ipython notebook,前面已經(jīng)安裝。在 shell 中執(zhí)行

ipython notebook --pylab=inline

得到下圖的界面,這是在瀏覽器中打開(kāi)的:

http://wiki.jikexueyuan.com/project/start-learning-python/images/31001.png" alt="" />

在 In 后面的編輯去,可以寫(xiě) Python 語(yǔ)句。然后按下 SHIFT+ENTER 或者 CTRL+ENTER 就能執(zhí)行了,如果按下 ENTER,不是執(zhí)行,是在當(dāng)前編輯區(qū)換行。

http://wiki.jikexueyuan.com/project/start-learning-python/images/31002.png" alt="" />

Ipython Notebook 是一個(gè)非常不錯(cuò)的編輯器,執(zhí)行之后,直接顯示出來(lái)輸入內(nèi)容和輸出的結(jié)果。當(dāng)然,錯(cuò)誤是難免的,它會(huì):

http://wiki.jikexueyuan.com/project/start-learning-python/images/31003.png" alt="" />

注意觀察圖中的箭頭所示,直接標(biāo)出有問(wèn)題的行。返回編輯區(qū),修改之后可繼續(xù)執(zhí)行。

http://wiki.jikexueyuan.com/project/start-learning-python/images/31004.png" alt="" />

不要忽視左邊的輔助操作,能夠讓你在使用 ipython notebook 的時(shí)候更方便。

http://wiki.jikexueyuan.com/project/start-learning-python/images/31005.png" alt="" />

除了在網(wǎng)頁(yè)中之外,如果你已經(jīng)喜歡上了 Python 的交互模式,特別是你用的計(jì)算機(jī)中有一個(gè) shell 的東西,更是棒了。于是可以:

$ ipython

進(jìn)入了一個(gè)類似于 Python 的交互模式中,如下所示:

In [1]: print "hello, pandas"
hello, pandas

In [2]: 

或者說(shuō) ipython 同樣是一個(gè)不錯(cuò)的交互模式。


總目錄   |   上節(jié):用 tornado 做網(wǎng)站 (7)   |   下節(jié):Pandas 使用 (1)

如果你認(rèn)為有必要打賞我,請(qǐng)通過(guò)支付寶:qiwsir@126.com,不勝感激。