1. 程式人生 > >Jupter 7個進階功能

Jupter 7個進階功能

1.  執行shell命令

Shell是一種與計算機進行文字互動的方式。

一般來講,當你正在使用Python編譯器,需要用到命令列工具的時候,要在shell和IDLE之間進行切換。

但是,如果你用的是Jupyter,就完全不用這麼麻煩了,你可以直接在命令之前放一個“!”,就能執行shell命令,完全不用切換來切換去,就能在IPython裡執行任何命令列。

1In [1]: !ls
2example.jpeg list tmp
3In [2]: !pwd
4/home/Parul/Desktop/Hello World Folder'
5In [3]: !echo "Hello World"
6Hello World
7

我們甚至可以將值傳遞給shell,像下面這樣:

1In [4]: files= !ls
2In [5]: print(files)
3['example.jpeg', 'list', 'tmp']
4In [6]: directory = !pwd
5In [7]: print(directory)
6['/Users/Parul/Desktop/Hello World Folder']
7In [8]: type(directory)
8IPython.utils.text.SList

注意,返回結果的資料型別不是列表。

2.  給Jupyter換主題

使用Jupyter主題,不僅能讓你的Jupyter介面更好看、更舒服,還能讓螢幕上的程式碼看起來更顯眼。

比如Chesterish主題:

solarizedl主題:

來看一下具體的操作方法:

第一步,安裝:

pip install jupyterthemes

第二步,載入可用主題列表:

jt -l
 

第三步,選擇你想要的主題:

1# selecting a particular theme
2jt -t <name of the theme>
3# reverting to original Theme
4jt -r

現在可用的主題有:

chesterish
grade3
gruvboxd
gruvboxl monokai
oceans16
onedork
solarizedd
solarizedl

把名字填進去就好啦。

不過,每次換主題的時候都要重新載入Jupyter,才能看到主題變化。

另外我們上面講的在命令之前加“!”也一樣可用。

3.  筆記本擴充套件

筆記本擴充套件(nbextensions)是一種JavaScript模組,可以載入到筆記本前端頁面上,可以大大提升使用者體驗。

比如下面這些擴充套件工具,簡直能讓效率提升10000倍。

Hinterland

Hinterland功能可以讓你每敲完一個鍵,就出現下拉選單,可以直接選中你需要的詞彙。

Snippets

Snippets在工具欄里加了一個下拉選單,可以非常方便的直接插入程式碼段,完全不用手動敲。

拆分單元格

拆分筆記本中的單元格,改成相鄰的模式,看起來就像分了兩欄。

目錄

這個功能可以自動找到所有的標題,生成目錄。

並且這個目錄還是移動的呦,你可以放在側邊欄,也可以拖動到任何你喜歡的地方懸浮起來。

摺疊一個標題下的全部內容

如果你的程式碼太長,覺得滾動過去太麻煩,可以直接摺疊掉。

 

Autopep8

一鍵美化程式碼,強迫症的福音。

安裝方法

最後看一下怎麼裝,需要用到conda:

1conda install -c conda-forge jupyter_nbextensions_configurator

或者用pip:

1pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
2#incase you get permission errors on MacOS,
3pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user

然後把Jupyter開啟,你就可以看到NBextensions這個選項卡了。

找不到的話就去選單的Edit裡面找。

搞定。

4.  Jupyter小工具

還有一些Jupyter小工具,比如滑塊、文字框之類的部分,可以做一些方便的互動。

滑塊

1def f(x):
2    return x
3# Generate a slider 
4interact(f, x=10,);

布林值生成複選框

1# Booleans generate check-boxes
2interact(f, x=True);

字串生成文字區域

1# Strings generate text areas
2interact(f, x='Hi there!');

播放器

 1play = widgets.Play(
2    # interval=10,
3    value=50,
4    min=0,
5    max=100,
6    step=1,
7    description="Press play",
8    disabled=False
9)
10slider = widgets.IntSlider()
11widgets.jslink((play, 'value'), (slider, 'value'))
12widgets.HBox([play, slider])

日曆

1widgets.DatePicker(
2    description='Pick a Date',
3    disabled=False
4)

不過這個部件只能咋Chrome和Edge裡用,Firefox和Safari不支援。

調色盤

1widgets.ColorPicker(
2    concise=False,
3    description='Pick a color',
4    value='blue',
5    disabled=False
6)

標籤

1tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
2children = [widgets.Text(description=name) for name in tab_contents]
3tab = widgets.Tab()
4tab.children = children
5for i in range(len(children)):
6    tab.set_title(i, str(i))
7tab

其他的小部件,可以在文末的傳送門跳轉到GitHub尋找。

安裝方法

1# pip
2pip install ipywidgets
3jupyter nbextension enable --py widgetsnbextension
4# Conda
5conda install -c conda-forge ipywidgets
6#Installing ipywidgets with conda automatically enables the extension

使用“interact”功能自動建立UI控制元件,這是使用IPython最方便的方法。

1# Start with some imports!
2from ipywidgets import interact
3import ipywidgets as widgets

5.  Qgrid

Qgrid也是一個Jupyter的小部件,不過它主要用於資料幀,裝上之後,就可以像操作Excel裡的篩選功能一樣,方便的處理資料。

安裝方法

用pip安裝:

1pip install qgrid
2jupyter nbextension enable --py --sys-prefix qgrid
3# only required if you have not enabled the ipywidgets nbextension yet
4jupyter nbextension enable --py --sys-prefix widgetsnbextension

用conda安裝:

1# only required if you have not added conda-forge to your channels yet
2conda config --add channels conda-forge
3conda install qgrid

6.  放PPT

人在江湖飄,難免遇到要做PPT的時候。

但是,如果你的內容都已經放在Jupyter裡了,再重新匯入PPT,太麻煩了,我們自動轉換吧。

一種方法是用Jupyter內建的PPT選項,依次點選選單欄裡的View → Cell Toolbar → Slideshow,之後每個單元格上面都會有一個灰色的橫條,選Sub-Slide。

然後輸入以下程式碼:

1jupyter nbconvert *.ipynb --to slides --post serve
2# insert your notebook name instead of *.ipynb

好了,現在就變成PPT樣式的了,顯示在埠8000,你也可以檢視原始碼找到PPT檔案。

你也可以提前換好主題,比如onedork主題,然後再轉換成PPT的的時候就是同一個主題風格的PPT了。

不過,用PyTorch預設方法生成的PPT程式碼不能編輯,這個時候就要用到RISE外掛了。

RISE用到reveal.js來執行PPT,可以不退出PPT,直接執行程式碼。

先來安裝RISE,推薦用conda:

1conda install -c damianavila82 rise

其實不太推薦pip:

1pip install RISE

然後呼叫JS和CSS:

1jupyter-nbextension install rise --py --sys-prefix
2#enable the nbextension:
3jupyter-nbextension enable rise --py --sys-prefix

安裝好啦,現在重新開啟你的Jupyter Notebook,發現一個新的擴充套件,名叫“Enter/Exit RISE Slideshow”。

戳一下,一個可以邊演示邊改的PPT就好了。

7.  放嵌入連結和pdf

扔連結再跳轉實在是太麻煩了,不如直接把素材放進Jupyter裡面。

嵌入連結

1#Note that http urls will not be displayed. Only https are allowed inside the Iframe
2from IPython.display import IFrame
3IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

操作方式如下,當然你需要把連結換成你要放的連結:

嵌入pdf

1from IPython.display import IFrame
2IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

同樣,把pdf連結換成你需要用的pdf。