IPython Notebook 簡(jiǎn)介

IPython Notebook 簡(jiǎn)介

目錄[-]

基礎(chǔ)

Tab 鍵自動(dòng)完成

內(nèi)省

魔術(shù)命令

歷史輸入和輸出變量

Notebook

演示文檔

操作指南

在 IPython 的官網(wǎng)(ipython.org)上蜂绎,介紹其的第一句話便是:IPython 是一個(gè)加強(qiáng)版的交互式 Shell腐碱。另外很多介紹 IPython 的文章也常以這句話開(kāi)頭趁冈,但這句話實(shí)在是等于沒(méi)說(shuō)皂岔。讓 IPython 在各種 shell(IDE) 中脫穎而出,成為科學(xué)計(jì)算標(biāo)配的单芜,并不是按 Tab 鍵代碼補(bǔ)完蜕该、以 % 開(kāi)頭的魔術(shù)命令這些大家都有的東西,而是與 matplotlib 這個(gè)數(shù)據(jù)可視化(繪圖)包的深度集成以及奇妙的 Notebook洲鸠。

IPython 較早的富 GUI 實(shí)現(xiàn)應(yīng)該是 Qt Console堂淡。過(guò)去在標(biāo)準(zhǔn) shell 里繪圖時(shí),彈出的繪圖窗口會(huì)接管 shell 會(huì)話的控制權(quán)扒腕,你想繼續(xù)輸入命令就必須先把繪圖窗口關(guān)掉绢淀。這對(duì)于希望同時(shí)實(shí)現(xiàn)可視化和交互式過(guò)程的數(shù)據(jù)分析用戶(hù)來(lái)說(shuō)顯然是難以忍受的,因此 Qt console 站出來(lái)解決了這個(gè)問(wèn)題瘾腰。在 Qt console 中通過(guò) matplotlib 繪制的圖形會(huì)獨(dú)立嵌于控制臺(tái)中皆的,并不影響你繼續(xù)輸入命令。

2011年蹋盆,由 Brian Granger 領(lǐng)導(dǎo)的 IPython 團(tuán)隊(duì)開(kāi)始開(kāi)發(fā)一種基于Web技術(shù)的交互式計(jì)算文檔格式费薄,即 IPython Notebook。為什么說(shuō)它是文檔格式栖雾,而非計(jì)算工具呢楞抡?實(shí)際上它兩者都是。Notebook 在交互上使用了 C/S 結(jié)構(gòu)析藕,它通過(guò) Tornado 建立一個(gè) shell 服務(wù)器召廷,并使用瀏覽器作為客戶(hù)端。另外 notebook 頁(yè)面都被保存為.ipynb的類(lèi) JSON 文件格式噪径。這種文件格式也是 Notebook 最吸引人的地方柱恤。

IPython Notebook 更詳細(xì)的介紹在下面第二節(jié)中給出,第一節(jié)講的是一些對(duì) IPython 的各種實(shí)現(xiàn)通用的功能找爱。

基礎(chǔ)

Tab 鍵自動(dòng)完成

和其他 IDE 差不多梗顺,自己多試試就好了

內(nèi)省

在變量名或命令的前面或后面加一個(gè) “?” 并執(zhí)行车摄,可以用于顯示該對(duì)象的一些通用信息寺谤,如對(duì)象類(lèi)型、文檔字符串等吮播,這就叫做對(duì)象內(nèi)省变屁。這種操作查看到的信息,尤其是函數(shù)和類(lèi)的信息意狠,比通常直接引用變量名然后回車(chē)所看到的(__repr__)要好粟关。“环戈?” 的另一個(gè)用法是可以搜索 IPython 的命名空間闷板,配合通配符使用效果如下:

In[1]:importnumpyasnpIn[2]:np.*load*?np.loadnp.loadsnp.loadtxtnp.pkgload

使用雙問(wèn)號(hào)“??”還可以查看對(duì)象的源代碼(如果可見(jiàn)的話)澎灸。

魔術(shù)命令

在 IPython 的會(huì)話環(huán)境中,所有文件都可以通過(guò)%run命令來(lái)當(dāng)做腳本執(zhí)行遮晚,并且文件中的變量也會(huì)隨即導(dǎo)入當(dāng)前命名空間性昭。即,對(duì)于一個(gè)模塊文件县遣,你對(duì)他使用%run命令的效果和from module import *相同糜颠,除非這個(gè)模塊文件定義了 main 函數(shù)(if __name__ == '__main__:'),這種情況下 main 函數(shù)還會(huì)被執(zhí)行萧求。

這種以 % 開(kāi)頭的命令在 IPython 中被稱(chēng)為魔術(shù)命令其兴,用于加強(qiáng) shell 的功能。常用的魔術(shù)命令有:

%quickref顯示 IPython 快速參考

%magic顯示所有魔術(shù)命令的詳細(xì)文檔

%debug從最新的異常跟蹤的底部進(jìn)入交互式調(diào)試器

%pdb在異常發(fā)生后自動(dòng)進(jìn)入調(diào)試器

%reset刪除 interactive 命名空間中的全部變量

%runscript.py執(zhí)行script.py

%prunstatement通過(guò) cProfile 執(zhí)行對(duì)statement的逐行性能分析

%timestatement測(cè)試statement的執(zhí)行時(shí)間

%timeitstatement多次測(cè)試statement的執(zhí)行時(shí)間并計(jì)算平均值

%who饭聚、%who_ls忌警、%whos顯示 interactive 命名空間中定義的變量,信息級(jí)別/冗余度可變

%xdelvariable刪除variable秒梳,并嘗試清除其在 IPython 中的對(duì)象上的一切引用

!cmd在系統(tǒng) shell 執(zhí)行cmd

output=!cmd args執(zhí)行cmd并賦值

%bookmark使用 IPython 的目錄書(shū)簽系統(tǒng)

%cddirecrory切換工作目錄

%pwd返回當(dāng)前工作目錄(字符串形式)

%env返回當(dāng)前系統(tǒng)變量(以字典形式)

對(duì)魔術(shù)命令不熟悉的話可以通過(guò)%magic查看詳細(xì)文檔法绵;對(duì)某一個(gè)命令不熟悉的話,可以通過(guò)%cmd?內(nèi)省機(jī)制查看特定文檔酪碘。值得一提的是朋譬,IPython 中使用del命令無(wú)法刪除所有的變量引用,因此垃圾回收機(jī)制也無(wú)法啟用兴垦,所以有些時(shí)候你會(huì)需要使用%xdel或者%reset徙赢。

歷史輸入和輸出變量

與標(biāo)準(zhǔn) Shell 類(lèi)似,IPython 中也可以通過(guò)_和__訪問(wèn)上一次和上上一次的輸出探越。同時(shí)你肯定注意到了狡赐,IPython 中每一次的輸入輸出都有序號(hào)。訪問(wèn)歷史 X 行輸出的方法為:_X钦幔;訪問(wèn)歷史 X 行輸入的方法為:_iX枕屉。因?yàn)樵L問(wèn)歷史輸出的使用概率較歷史輸入大很多,所以訪問(wèn)歷史輸出僅使用下劃線加行號(hào)即可鲤氢,同時(shí)為了區(qū)分搀擂,訪問(wèn)歷史輸入時(shí)需添加小寫(xiě)字母 “i”,代表 “in”卷玉。

In[24]:1+1Out[24]:2In[25]:_i24Out[25]:'1+1'In[26]:_24Out[26]:2

Notebook

Notebook 的官方信息可以從 ipython.org/notebook 獲得哨颂,不過(guò)好像被墻了。上不去的話也可以訪問(wèn)它的 github 頁(yè)面相种,ipython/examples/Notebook 目錄下有很多可供參考的內(nèi)容威恼。前面說(shuō)過(guò) Notebook 有一種 .ipynb 的文件格式,當(dāng)你打開(kāi)這個(gè)例程目錄下的某個(gè)文件后,就能體會(huì)到 Notebook 的奇妙之處了沃测。

演示文檔

目前在各種 Python 研討會(huì)上缭黔,一種流行的演示手段就是使用 IPython Notebook食茎,然后再將 .ipynb 文件發(fā)布到網(wǎng)上以供所有人查閱蒂破。除了前面說(shuō)過(guò)的可以?xún)?nèi)嵌 matplotlib 繪圖外,Notebook 還同時(shí)提供了對(duì) LaTex 和 MarkDown 的支持别渔!

如上圖便展示了一個(gè) .ipynb 文件的示例頁(yè)面附迷。其中一對(duì)In Out會(huì)話被視作一個(gè)單元,稱(chēng)為cell哎媚。第一個(gè) cell 里我寫(xiě)入的內(nèi)容其實(shí)是:

##LaTex 演示

---$Z=\frac{X-\bar{X}}{S}$

分別使用了 MarkDown 和 LaTex 的語(yǔ)法喇伯。按下Shift + Enter后這段內(nèi)容就被渲染成了圖片中的樣子。

cell 特別親切的地方在于:它可以作為一個(gè)類(lèi)似“段落”的概念來(lái)進(jìn)行編輯拨与,不管是執(zhí)行前還是執(zhí)行后稻据,而且既可以針對(duì)內(nèi)容進(jìn)行編輯,也可以對(duì) cell 整體應(yīng)用 copy买喧、paste捻悯、cut 等操作,甚至還可以前后移動(dòng) cell 的位置淤毛。這帶來(lái)的好處是今缚,在大量試驗(yàn)性的交互操作過(guò)后,他不會(huì)像普通 shell 那樣留下無(wú)數(shù)沒(méi)用的 IO 內(nèi)容低淡。如果某條命令的輸出不理想或者報(bào)了錯(cuò)姓言,你就可以回頭編輯后重新運(yùn)行,或把它移位或干脆刪掉蔗蹋。這樣在很久的一段交互過(guò)程后何荚,Notebook 留下的反而是一份干凈整潔的文檔。

.ipynb 文件使用的是一種類(lèi) JSON 的文本格式猪杭,就像這樣:

"worksheets": [? ? {"cells": [? ? ? ? ? ? {"cell_type":"markdown","metadata": {},"source": ["##LaTex \u6f14\u793a\n","---\n","$Z=\\frac{X-\\bar{X}}{S}$"]? ? ? ? ? ? },

這種交互式計(jì)算環(huán)境餐塘,對(duì)繪圖、數(shù)學(xué)公式胁孙、簡(jiǎn)易排版語(yǔ)法的支持唠倦,還有一種方便的文檔格式,共同幫助 Notebook 成為了 Python 科學(xué)計(jì)算的理想工具涮较。另外這種使用瀏覽器和服務(wù)進(jìn)程的 C/S 結(jié)構(gòu)還暗含了一種遠(yuǎn)程連接可能稠鼻,拋開(kāi)安全性不談的話,其在教學(xué)方面也有很高的潛力狂票。

操作指南

當(dāng)通過(guò) IPython Notebook.exe 進(jìn)入應(yīng)用時(shí)候齿,首先打開(kāi)的是 Home 頁(yè)面,地址一般為:http://127.0.0.1:8888/tree。Home 目錄下會(huì)列出所有的歷史文件記錄慌盯,右上角則有一個(gè) “New Notebook” 按鈕可以新建一個(gè)會(huì)話周霉。

在 .ipynb 文件的交互頁(yè)面,需要注意的除了標(biāo)準(zhǔn)的 IPython 語(yǔ)法外亚皂,就是頁(yè)面抬頭處的菜單欄和工具欄了俱箱。Notebook 很貼心地提供了非常友好的幫助頁(yè)面,因此本文不再贅述灭必∧祝基本看完這兩個(gè)頁(yè)面(內(nèi)容很少)后就能對(duì) Notebook 的操作方式了解的差不多。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末禁漓,一起剝皮案震驚了整個(gè)濱河市跟衅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌播歼,老刑警劉巖伶跷,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秘狞,居然都是意外死亡叭莫,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)谒撼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)食寡,“玉大人,你說(shuō)我怎么就攤上這事廓潜〉种澹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵辩蛋,是天一觀的道長(zhǎng)呻畸。 經(jīng)常有香客問(wèn)我,道長(zhǎng)悼院,這世上最難降的妖魔是什么伤为? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮据途,結(jié)果婚禮上绞愚,老公的妹妹穿的比我還像新娘。我一直安慰自己颖医,他們只是感情好位衩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著熔萧,像睡著了一般糖驴。 火紅的嫁衣襯著肌膚如雪僚祷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天贮缕,我揣著相機(jī)與錄音辙谜,去河邊找鬼。 笑死感昼,一個(gè)胖子當(dāng)著我的面吹牛装哆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抑诸,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼烂琴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了蜕乡?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梗夸,失蹤者是張志新(化名)和其女友劉穎层玲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體反症,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辛块,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铅碍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片润绵。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖胞谈,靈堂內(nèi)的尸體忽然破棺而出尘盼,到底是詐尸還是另有隱情,我是刑警寧澤烦绳,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布卿捎,位于F島的核電站,受9級(jí)特大地震影響径密,放射性物質(zhì)發(fā)生泄漏午阵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一享扔、第九天 我趴在偏房一處隱蔽的房頂上張望底桂。 院中可真熱鬧,春花似錦惧眠、人聲如沸籽懦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)猫十。三九已至览濒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拖云,已是汗流浹背贷笛。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宙项,地道東北人乏苦。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尤筐,于是被迫代替她去往敵國(guó)和親汇荐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容