Jupyter Notebook(此前被稱爲 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。在本文中,咱們將介紹 Jupyter notebook 的主要特性,以及爲何對於但願編寫漂亮的交互式文檔的人來講是一個強大工具。html
在開始使用 notebook 以前,咱們先須要安裝該庫。你能夠在 Jupyter 官網上找到完整的步驟。編程
譯者注:其實只要
pip install jupyter
就能夠了瀏覽器
jupyter notebook
運行上面的命令以後,你將看到相似下面這樣的輸出:markdown
[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 主界面,以下所示:cookie
若是想新建一個 notebook,只須要點擊New
,選擇你但願啓動的 notebook 類型便可。網絡
這裏,由於我只有一個 Python 內核,因此咱們運行一個 Python notebook。在新打開的標籤頁中,咱們會看到 notebook 界面,目前裏面什麼也沒有。編程語言
notebook 界面由如下部分組成:工具
慢慢熟悉這些菜單和選項。若是想要詳細瞭解有關 notebook 或一些庫的具體話題,可使用菜單欄右側的幫助菜單。測試
下方的主要區域,由被稱爲單元格的部分組成。每一個 notebook 由多個單元格構成,而每一個單元格又能夠有不一樣的用途。網站
下方截圖中看到的是一個代碼單元格(code cell),以[ ]
開頭。在這種類型的單元格中,能夠輸入任意代碼並執行。例如,輸入1 + 2
並按下Shift + Enter
。以後,單元格中的代碼就會被計算,光標也會被移動動一個新的單元格中。你會獲得以下結果:
根據綠色邊框線,咱們能夠輕鬆地識別出當前工做的單元格。接下來,咱們在第二個單元格中輸入些其餘代碼,例如:
for i in range(5): print(i)
對上面的代碼求值時,你會獲得:
和前一個示例同樣,代碼被計算以後,立刻就會顯示結果。你應該注意到了,此次沒有出現相似Out[2]
這樣的文字。這是由於咱們將結果打印出來了,沒有返回任何的值。
notebook 有一個很是有趣的特性,就是能夠修改以前的單元格,對其從新計算,這樣就能夠更新整個文檔了。試着把光標移回第一個單元格,並將1 + 2
修改爲2 + 3
,而後按下Shift + Enter
從新計算該單元格。你會發現結果立刻就更新成了 5。若是你不想從新運行整個腳本,只想用不一樣的參數測試某個程式的話,這個特性顯得尤爲強大。不過,你也能夠從新計算整個 notebook,只要點擊Cell
-> Run all
便可。
如今咱們已經知道了如何輸入代碼,爲何不嘗試着讓這個 notebook 更加漂亮、內容更豐富?爲此,咱們須要使用其餘類型的單元格,即 Header單元格和 Markdown單元格。
首先,咱們在頂部添加一個 notebook 的標題。選中第一個單元格,而後點擊Insert
-> Insert單元格above
(在上方插入單元格)。你會發現,文檔的頂部立刻就出現了一個新的單元格。點擊在快捷鍵欄中的單元格類型,將其變成一個標題單元格(heading cell):
選中下拉選項中的 Heading。而後會出現一個彈出消息,告訴你如何建立不一樣層級的標題,這樣你就有了一個不一樣類型的 cell:
這個單元格以#
標記開頭,意味着這是一個一級標題。若是須要子標題,可使用如下標記表示(改變單元格類型時彈出消息中有解釋):
# : 一級標題
## : 二級標題
### : 三級標題
...
在#
以後寫下文檔的標題,而後計算該單元格。你會發現一個樣式很是好看的標題。做爲示例和練習,我還添加了其餘幾個標題單元格:
添加好標題以後,咱們在編寫一些解釋,介紹每一個代碼單元格中的狀況。爲此,咱們要在相應的地方插入單元格,而後將其類型變成 Markdown。而後,計算新的單元格。就這樣,你的解釋文本就漂亮地渲染出來了!
最後,你能夠重命名該 notebook,點擊Fiel
-> Rename
,而後輸入新的名稱。這樣,新的名稱將會出如今窗口的左上角,在 Jupyter 的標誌旁邊。
高級單元格操做,將讓編寫 notebook 變得更加方便。舉例以下:
Edit
-> Delete Cell
;Edit
-> Move cell [up | down]
;Edit
-> Cut Cell
,而後在點擊Edit
-> Paste Cell [Above | Below]
;Edit
-> Merge Cell [Above | below]
。記住這些操做,它們能夠幫助你節省許多時間。
咱們再來看看 Markdown 單元格。雖然它的類型是 markdown,可是這類單元格也接受 HTML 代碼。這樣,你就能夠在單元格類實現更加豐富的樣式,添加圖片,等等。例如,若是想在 notebook 中添加 Jupyter 的 logo,將其大小設置爲 100px x 100px,而且放置在單元格左側,能夠這樣編寫:
<img src="http://blog.jupyter.org/content/images/2015/02/jupyter-sq-text.png" style="width:100px;height:100px;float:left">
計算該單元格以後,會出現這樣的結果:
另外,markdown 單元格還支持 LaTex 語法。例如:
$$\int_0^{+\infty} x^2 dx$$
計算上述單元格,將得到下面的 LaTex 方程式:
notebook 還有一個強大的特性,就是其導出功能。能夠將 notebook 導出爲多種格式:
導出 PDF 功能,可讓你不用寫 LaTex 便可建立漂亮的 PDF 文檔。你還能夠將 notebook 做爲網頁發佈在你的網站上。甚至,你能夠導出爲 ReST 格式,做爲軟件庫的文檔。
若是你用 Python 繪製過圖形,那你確定知道 matplotlib。Matplotlib 是一個用於建立漂亮圖形的 Python 庫,結合 Jupyter notebook 使用時體驗更佳。
要想在 Jupyter notebook 中使用 matplotlib,須要告訴 Jupyter 獲取 matplotlib 生成的全部圖形,並將其嵌入 notebook 中。爲此,須要計算:
%matplotlib inline
譯註:要想執行成功,須要先
pip install matplotlib
。
運行這個指令可能要花個幾秒鐘,可是在 notebook 中須要執行一次便可。接下來,咱們來繪製一個圖形,看看具體的集成效果:
import matplotlib.pyplot as plt import numpy as np x = np.arange(20) y = x**2 plt.plot(x, y)
上面的代碼將繪製方程式 y=x^2 。計算單元格後,會獲得以下圖形:
咱們看到,繪製出的圖形直接添加在了 notebook 中,就在代碼的下面。咱們能夠以後修改代碼,從新計算,這時圖形也會動態更新。這是每一個數據科學家都想要的一個特性:將代碼和圖片放在同一個文件中,清楚地看出每段代碼的效果。
咱們能夠很是容易地在一臺電腦上啓動 Jupyter,並且支持多人經過網絡鏈接同一個 Jupyter 實例。在上一篇文章中,你有沒有注意啓動 Jupyter 時出現過這樣一段話:
The IPython Notebook is running at: http://localhost:8888/
這意味着,你的 notebook 是本地運行的,能夠在瀏覽器上打開 http://localhost:8888/ ,從而訪問 notebook。你也能夠修改下配置,讓該 notebook 能夠被公開訪問。這樣,任何知道 notebook 地址的人均可以鏈接到 notebook 進行遠程修改。
從這兩篇快速入門介紹中,咱們能夠看到:Jupyter notebook 是一個很是強大的工具,能夠建立漂亮的交互式文檔,製做教學材料,等等。建議你立刻開始使用 Jupyter notebook,探索更多 notebook 的強大功能。
連接來自:https://www.packtpub.com/books/content/getting-started-jupyter-notebook-part-1