簡介
Jupyter Notebook(此前被稱為 Ipython notebook)是一個交互式筆記本瞧甩,支持運行 40 多種編程語言。在本文中灶伊,我們將介紹 Jupyter notebook 的主要特性疆前,以及為什么對于希望編寫漂亮的交互式文檔的人來說是一個強大工具。
安裝與啟動
- 安裝
在開始使用 notebook 之前聘萨,我們需要安裝該庫竹椒。你可以在 Jupyter 官網(wǎng)上找到完整的步驟。
譯者注:其實只要 pip install jupyter 就可以了
- 運行命令
jupyter notebook
- 運行結(jié)果
運行上面的命令之后米辐,你將看到類似下面這樣的輸出:
[I 20:06:36.367 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 20:06:36.813 NotebookApp] Serving notebooks from local directory: /home/your_username
[I 20:06:36.813 NotebookApp] 0 active kernels
[I 20:06:36.813 NotebookApp] The IPython Notebook is running at: http://localhost:8888/
[I 20:06:36.813 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
同時胸完,會在你開啟 notebook 的文件夾中啟動 Jupyter 主界面,如下所示:
如果想新建一個 notebook翘贮,只需要點擊 New舶吗,選擇你希望啟動的 notebook 類型即可。
這里择膝,因為我只有一個 Python 內(nèi)核誓琼,所以我們運行一個 Python notebook。在新打開的標簽頁中肴捉,我們會看到 notebook 界面腹侣,目前里面什么也沒有。
注意:使用 pip install jupyter齿穗,可能使用啟動命令 jupyter notebook 時傲隶,出現(xiàn)如下問題:
Error executing Jupyter command 'notebook': [Errno 2] No such file or directory
使用
1)notebook 界面由以下部分組成
- notebook 名稱。
- 主工具來窃页,提供了保存跺株、導出、重載 notebook脖卖,以及重啟內(nèi)核等選項乒省。
- 快捷建。
- notebook 主要區(qū)域畦木,包括了 notebook 的內(nèi)容編輯區(qū)袖扛。
慢慢熟悉這些菜單和選項,如果想要詳細了解有關 notebook 或一些庫的具體話題,可以使用菜單欄右側(cè)的幫助菜單蛆封。
2)下方的主要區(qū)域唇礁,由被成為單元的部分組成。
每個 notebook 由多個單元格構成惨篱,而每個單元格又可以有不同的用途盏筐。
- 下方截圖中看到的是一個代碼單元(code cell),以 [ ] 開頭砸讳。在這種類型的單元格中琢融,可以輸入任意代碼并執(zhí)行。例如绣夺,輸入
1 + 2
并按下Shift + Enter
。之后欢揖,單元格中的代碼就會被計算陶耍,光標也會被運到一個新的單元格中。
你會得到如下結(jié)果:
運行結(jié)果.jpg
根據(jù)綠色框線她混,我們可以輕松地識別出當前工作的單元格烈钞。 - 我們在第二個單元格中輸入其他代碼
例如:
for i in range(5):
print(i)
對于上面的代碼求值時,你會得到如下結(jié)果:
和前一個示例一樣坤按,代碼被計算之后毯欣,馬上就會顯示結(jié)果。你應該注意到臭脓,這次沒有出現(xiàn)類似
Out[2]
這樣的文字酗钞。這是因為我們將結(jié)果打印出來了,沒有返回任何的值来累。
修改單元格并計算
notebook 有一個非常有趣的特性砚作,就是可以修改ia之前的單元格,對其重新計算嘹锁,這樣就可以更新整個文檔了葫录。
試著把光標移回第一個單元格,并將1 + 2
修改成2 + 3
领猾,然后按下Shift + Enter
重新計算該單元格米同。你會發(fā)現(xiàn)結(jié)果馬上就更新成了5``。 如果你不想重新執(zhí)行整個腳本摔竿,只想用不同的參數(shù)測試某個程式的話面粮,這個特性顯得尤其強大。不過继低,你也可以重新計算整個
notebook但金,只要點擊
Cell -> Run all``` 即可。-
豐富內(nèi)容
現(xiàn)在我們已經(jīng)知道了如何輸入代碼為什么不嘗試著讓這個notebook
更加漂亮郁季、內(nèi)容更豐富冷溃?
為此钱磅,我們需要使用其他類型的單元格,即Header
單元格和Markdown
單元格似枕。
首先盖淡,我們在頂部添加一個notebook
的標題。選中第一個單元格凿歼,然后點擊Insert -> Insert
單元格above
(在上方插入單元格)褪迟。你會發(fā)現(xiàn),文檔的頂部馬上就出現(xiàn)了一個新的單元格答憔。淡季在快捷欄中的單元格類型味赃,將其變成一個標題單元格(heading cell):
heading cell.jpg
選中下拉選項中的Heading
。然后會出現(xiàn)一個彈出消息虐拓,告訴你如何創(chuàng)建不同的層級的標題心俗,這樣你就有了一個不同類型的cell
:
cell.jpg
這個單元格以#
標記開頭,意味著這是一個一級標題蓉驹。如果需要子標題城榛,可以使用以下標記表示(改變單元格類型時彈出消息中有解釋):
# : 一級標題
## : 二級標題
### : 三級標題
...
在 #
之后寫下文檔的標題,然后計算該單元格态兴。你會發(fā)現(xiàn)一個樣式非常號看的標題狠持。作為示例和練習,我們還添加了其他幾個標題單元格:
- 重新命名該
notebook
點擊File -> Rename
瞻润,然后輸入新的名稱喘垂。這樣,新的名稱將會出現(xiàn)在窗口的左上角绍撞,在Jupyter
的標志旁邊王污。
單元格操作
高級單元格操作,將讓編寫 notebook
變得更加方便楚午。
舉例:
. 如果想刪除某個單元格昭齐,可以選擇該單元格,然后依次點擊Edit -> Delete Cell矾柜;
. 如果想移動某個單元格阱驾,只需要依次點擊Edit -> Move cell [up | down];
. 如果想剪貼某個單元測怪蔑,可以先點擊Edit -> Cut Cell里覆,然后在點擊Edit -> Paste Cell [Above | Below];
. 如果你的 notebook 中有很多單元格只需要執(zhí)行一次缆瓣,或者想一次性執(zhí)行大段代碼喧枷,那么可以選擇合并這些單元格。點擊Edit -> Merge Cell [Above | below]。
記住這些操作隧甚,他們可以幫助你節(jié)省許多時間车荔。
Markdown 單元格高級用法
我們再來看看 Markdown 單元格。雖然它的類型是 markdown戚扳,但是這類單元格也接受 HTML 代碼忧便。這樣,你就可以在單元格類實現(xiàn)更加豐富的樣式帽借,添加圖片珠增,等等。例如砍艾,如果想在 notebook 中添加 Jupyter 的 logo蒂教,將其大小設置為 100px x 100px,并且放置在單元格左側(cè)脆荷,可以這樣編寫:
<img src="http://blog.jupyter.org/content/images/2015/02/jupyter-sq-text.png"
style="width:100px;height:100px;float:left">
計算該單元格之后凝垛,會出現(xiàn)這樣的結(jié)果:
另外,markdown 單元格還支持 LaTex 語法简烘。例如:
$$\int_0^{+\infty} x^2 dx$$
計算上述單元格苔严,將獲得下面的 LaTex 方程式:
導出功能
notebook 還有一個強大的特性定枷,就是其導出功能孤澎。可以將 notebook 導出為多種格式:
. HTML
. Markdown
. ReST
. PDF(通過 LaTeX)
. Raw Python
導出 PDF 功能欠窒,可以讓你不用寫 LaTex 即可創(chuàng)建漂亮的 PDF 文檔覆旭。你還可以將 notebook 作為網(wǎng)頁發(fā)布在你的網(wǎng)站上。甚至岖妄,你可以導出為 ReST 格式型将,作為軟件庫的文檔。
Matplotlib 集成
如果你用 Python 繪制過圖形荐虐,那你肯定知道 matplotlib七兜。Matplotlib 是一個用于創(chuàng)建漂亮圖形的 Python 庫,結(jié)合 Jupyter notebook 使用時體驗更佳福扬。
要想在 Jupyter notebook 中使用 matplotlib腕铸,需要告訴 Jupyter 獲取 matplotlib 生成的所有圖形,并將其嵌入 notebook 中铛碑。
為此狠裹,需要計算:
%matplotlib inline
譯注:要想執(zhí)行成功,需要先pip install matplotlib汽烦。
運行這個指令可能要花個幾秒鐘涛菠,但是在 notebook 中需要執(zhí)行一次即可。接下來,我們來繪制一個圖形俗冻,看看具體的集成效果:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(20)
y = x**2
plt.plot(x, y)
上面的代碼將繪制方程式 y=x^2 礁叔。計算單元格后,會得到如下圖形:
我們看到言疗,繪制出的圖形直接添加在了 notebook 中晴圾,就在代碼的下面。我們可以之后修改代碼噪奄,重新計算死姚,這時圖形也會動態(tài)更新。這是每個數(shù)據(jù)科學家都想要的一個特性:將代碼和圖片放在同一個文件中勤篮,清楚地看出每段代碼的效果都毒。
非本地內(nèi)核
我們可以非常容易地在一臺電腦上啟動 Jupyter,而且支持多人通過網(wǎng)絡連接同一個 Jupyter 實例碰缔。在上一篇文章中账劲,你有沒有注意啟動 Jupyter 時出現(xiàn)過這樣一段話:
The IPython Notebook is running at: http://localhost:8888/
這意味著,你的 notebook 是本地運行的金抡,可以在瀏覽器上打開 http://localhost:8888/ 瀑焦,從而訪問 notebook。你也可以修改下配置梗肝,讓該 notebook 可以被公開訪問榛瓮。這樣,任何知道 notebook 地址的人都可以連接到 notebook 進行遠程修改巫击。
遠程訪問 jupyter notebook 配置:http://www.reibang.com/p/8d296b84ac0f
結(jié)語
從這篇快速入門介紹中禀晓,我們可以看到:Jupyter notebook 是一個非常強大的工具,可以創(chuàng)建漂亮的交互式文檔坝锰,制作教學材料粹懒,等等。建議你馬上開始使用 Jupyter notebook顷级,探索更多 notebook 的強大功能凫乖。