在一次師兄的例會匯報中,介紹了ipython notebook,當時覺得很酷炫,漸漸自己使用的時候才發現真的很強大。抽空整理下,找了些資料進行補充,並挨個進行了實現,留個筆記,也歡迎喜歡Python編程的碼農使用。有不全的歡迎補充。
IPython notebook目前已經成為用Python做教學、計算、科研的一個重要工具。關於其發展,以及介紹,感興趣可以找文獻閱讀。本文主要講解的是它的基本用法和技巧。
IPython Notebook使用瀏覽器作為界面,向后台的IPython服務器發送請求,並顯示結果。
Ipython使用了websocket,它是不支持IE的.一般用Chrome就好了.
好, 說了這么多,我們打開先看下,打開方式很簡單,直接cmd進入到你要創建的目錄下,然后輸入命令:ipython notebook(現在升級了,打開主頁顯示的是jupyter,所以也可以使用jupyter notebook命令)。
可以看到在瀏覽器界面中使用單元(Cell)保存各種信息。Cell有多種類型,經常使用的有表示代碼的Code單元,和表示格式化文本的Markdown單元。
每個代碼單元都有一個輸出區域,在Code單元中輸入代碼,按 Ctrl-Enter 將運行此代碼,代碼中最后一個表達式的值將輸出區域顯示。如果希望屏蔽輸出,可以在最后一條語句之后添加一個分號:”;”。此外,代碼中還可以使用print語句在輸出區域中顯示信息。
與IPython一樣,在cell中可以直接按tab鍵,可以自動補全,超級實用。
Markdown文本
具體可以參考https://maxiang.io/或者其他文檔
- 文本編輯
Markdown 是一種用來寫作的輕量級「標記語言」,它用簡潔的語法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設置。它使我們專心於碼字,用「標記」語法,來代替常見的排版格式。
- 數學公式
可以使用LaTeX公式
創建行內公式,例如 $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$。
或者塊級公式: $$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
- 代碼塊
可以直接在頁面輸出代碼塊,只需要在前后加上```代碼塊 ```即可。
- 表格
可以使用markdown標記生成表格
嵌入圖片
嵌入音樂
可以嵌入本地音樂和網絡音樂
嵌入視頻
網絡視頻
本地視頻
嵌入網頁
嵌入鏈接
魔法命令
所有以%開頭的方法,都是所謂的魔術方法(Magic function),也就是ipython內置的一些方法。需要注意的是,魔術方法有%和%%之分,比如%timeit
和%%timeit
。在ipython中有專門的叫法,前者叫line magic
后者叫cell magic
。顧名思義,前者是專門針對一行的命令,后者針對多行的命令。
通過%lsmagis可以查看所有的magic命令,使用?或者??可以查看該命令的信息,后者可以查看源碼。如: %alias?,會出現該方法的描述。
接下來對一些常用的進行展示:
- 加載文件
- 執行文件
run命令還可以附加選項,常用的有-t
選項,這個會在腳本執行完后,打印出執行的cpu timings。如果指定了-t
選項,后面可以跟一個-Nx
,x代表一個數字。表示重復執行x次。
另外比較好用的是-d
選項,這個會在pdb中運行腳本。后跟-bxx
打斷點。
還有一個-p
選項,這個選項會開啟python profiler,從而打印出詳細的執行時間、函數調用等等信息供優化參考。
- 嵌入繪圖
在網頁中嵌入繪圖庫繪制的圖形,可以使用%matplotlib inline或者%pylab inline啟動這個功能。還可以啟動ipython后台服務器時,在命令行下輸入ipython notebook --matplotlib inline或ipython notebook --pylab inline。這樣的話它就會導入pylab(mathplotlib)庫.而且顯示圖片時可以嵌在網頁中的。
- 執行效率
這個命令用來測試一條命令執行的時間,一般而且,會重復100次運行這個命令,然后取出最好的3個結果取平均值。
還可以指定選項。
-n
指定重復次數,默認100
-r
是取多少個結果的平均值,默認是3
還有很多的magic命令,就不一一列舉,感興趣可以自己去嘗試。
參考:http://hyry.dip.jp/tech/slice/slice.html/35
http://kochiya.me/www/posts/Ipython!.html
http://www.cnblogs.com/zhuangzhuang1988/archive/2012/11/19/2777195.html
http://nbviewer.ipython.org/github/ipython/ipython/blob/3.x/examples/Index.ipynb