1. 程式人生 > >2、Jupyter Notebook 快速入門

2、Jupyter Notebook 快速入門

style 獲得 名稱 有趣的 pri 16px move 連接 res

Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。這裏,我們將介紹 Jupyter notebook 的主要特性,以及為什麽對於希望編寫漂亮的交互式文檔的人來說是一個強大工具。

說明:在開始使用 notebook 之前,我們當然需要先安裝該庫(有關如何安裝該庫請參看本博客的其它隨筆文檔)。

(1)啟動Jupyter notebook

在安裝目錄下或者通過“cmd”進入命令行窗口,在指定目錄下啟動“Jupyter notebook

技術分享

(2)notebook 界面的組成:

  1. notebook 的名稱
  2. 主工具欄,提供了保存、導出、重載 notebook,以及重啟內核等選項
  3. 快捷鍵
  4. 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]
  • 如果你的 notebook 中有很多單元格只需要執行一次,或者想一次性執行大段代碼,那麽可以選擇合並這些單元格。點擊Edit -> Merge Cell [Above | below]

記住這些操作,它們可以幫助你節省許多時間。

Markdown 單元格高級用法

我們再來看看 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 導出為多種格式:

  • HTML
  • Markdown
  • ReST
  • PDF(通過 LaTeX)
  • Raw Python

導出 PDF 功能,可以讓你不用寫 LaTex 即可創建漂亮的 PDF 文檔。你還可以將 notebook 作為網頁發布在你的網站上。甚至,你可以導出為 ReST 格式,作為軟件庫的文檔。

Matplotlib 集成

如果你用 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 進行遠程修改。

鏈接來自:https://www.packtpub.com/books/content/getting-started-jupyter-notebook-part-1

2、Jupyter Notebook 快速入門