點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達

你對 Jupyter Notebook 了解多少?本文介紹了一些自定義功能,幫助你使用 Jupyter notebook 更高效地寫代碼。
Jupyter Notebook 是所有開發(fā)者共享工作的神器,它為共享 Notebooks 提供了一種便捷方式:結合文本、代碼和圖更快捷地將信息傳達給受眾。目前,Jupyter Notebook 已經應用于數(shù)據分析和數(shù)據科學等領域。
然而,大部分開發(fā)者僅僅了解其皮毛。開發(fā)者使用 Jupyter Notebook 的基本功能來寫 Python 代碼、展示圖。但是你們知道 Jupyter 中還有大量自定義功能嗎?這些很酷的選項可以幫助你使用 Jupyter notebook 更高效地寫代碼、展示圖。
本文將介紹強化 Jupyter Notebook 功能的 4 種方法。
在技術或編程文本中,shell 表示使用文本與計算機進行交互的方式。最流行的 Unix shell 是 Bash(Bourne Again SHell),Bash 是 Linux 機器上終端默認的 shell。
在使用 Python 工作時,你會經常在寫 Python 代碼和使用 shell 命令之間來回切換。例如,你想使用 Python 讀取磁盤中的某份文件,而這需要你確認文件名。通常情況下,你需要在終端輸入 ls,獲得當前目錄的所有文件和文件夾列表。但這樣來回切換非常繁瑣低效。
很炫酷的是,Jupyter 能夠執(zhí)行 Shell 命令,你甚至無需離開瀏覽器。只需要在 shell 命令前加一個感嘆號!,Jupyter 會將其轉換為 Bash。在任一命令前加感嘆號!,它們就可以在 Python Jupyter Notebook 中運行。
# Listing folder contents
>>> !ls
mynotebook.ipynb stuff.txt# Getting the current directory
>>> !pwd
/home/george/github/project_1# Printing from Bash
>>> !echo "Pizza is delicious!"
Pizza is delicious!
我們還可以將 shell 命令的輸出分配給 Python 變量,如下所示:
# Getting the current directory.
# The variable "X" now contains ["/home/george/github/project_1"]
X = !pwd

很多文本編輯器和編程 IDE 都有自定義主題。開發(fā)者最喜歡的主題之一是暗黑主題(如 monaki),因為對于整天盯著屏幕的開發(fā)者而言,暗黑主題看起來比較舒適。幸運的是,Jupyter 有一個插件,允許用戶自行選擇主題。
要想安裝該插件,你只需在終端中運行以下 pip 命令:
pip install jupyterthemes
jt -l
chesterish
grade3
gruvboxd
gruvboxl
monokai
oceans16
onedork
solarizedd
solarizedl
查看這些主題,如下圖所示,我們擁有大量不同的顏色選擇。
solarizedd(左),gruvboxl(中),grade3(右)。
Jupyter Notebook 擴展插件(nbextensions)是一些 JavaScript 模塊,你可以使用它們強化 Notebook 的功能以及使用。擴展插件本質上修改了 Jupyter UI,以實現(xiàn)更穩(wěn)健的功能。
我們首先通過 pip 安裝 nbextensions:
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install
安裝完成后,啟動 Jupyter。你將看到一個新選項——NBextensions。選擇它之后,你會看到大量 Jupyter Notebook 擴展插件選項。
通過快速搜索,你可以查看這些擴展插件的功能。下面我將介紹幾個最重要的插件。
正如其名稱所描述的那樣,Table of Contents 基于 notebook 中 # 創(chuàng)建的標題自動生成目錄。例如,我在 notebook 中創(chuàng)建了以下標題:
# This is a super big title
## This is a big title
### This is a medium title
#### This is a small title
則左側會生成目錄。雙擊標題,可鏈接至對應章節(jié)內容。當 notebook 規(guī)模很大,選項很多時,這個功能非常方便!
代碼補全是大部分 IDE 都具備的常見功能,比如 PyCharm。開發(fā)者喜歡這個功能,因為這使得他們的工作更加簡單,開發(fā)者無需記住每一個命令,IDE 會準備好一切。
Hinterland 可在 Jupyter Notebook 內完成代碼補全。在鍵入過程中,你會看到一些代碼補全建議。尤其是當你搜索外部庫的命令時(示例如下所示)。這簡直太方便了!
拆分單元格允許開發(fā)者并排查看 2 個單元格。當你有兩個相關單元格時(比如描述及其對應的圖示),這個功能非常方便。
4. 使用 Qgrid 探索 Dataframes最后一站是 Qgrid,該工具允許開發(fā)者在不使用復雜 Pandas 代碼的情況下,探索和編輯數(shù)據幀。Qgrid 可在 Jupyter notebook 中以交互的方式渲染 pandas 數(shù)據幀,這樣你就可以執(zhí)行一些直觀的控制,如滾動、排序和篩選,以及雙擊單元格編輯數(shù)據幀。
pip install qgrid
jupyter nbextension enable --py --sys-prefix widgetsnbextension
要想使用 Qgrid 渲染數(shù)據幀,開發(fā)者只需導入 Qgrid,然后將數(shù)據幀輸入到 show_grid 函數(shù):
import qgrid
qgrid_widget = qgrid.show_grid(df, show_toolbar=True)
qgrid_widget
這樣,你可以對數(shù)據幀執(zhí)行大量交互式操作:
將更多參數(shù)輸入 show_grid 函數(shù)可以執(zhí)行其他交互式操作。關于 Qgrid 的全部功能,參見:https://github.com/quantopian/qgrid。

以上就是強化 Jupyter Notebook 功能的 4 種方法。
好消息!
小白學視覺知識星球
開始面向外開放啦??????
下載1:OpenCV-Contrib擴展模塊中文版教程
在「小白學視覺」公眾號后臺回復:擴展模塊中文教程,即可下載全網第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內容。下載2:Python視覺實戰(zhàn)項目52講在「小白學視覺」公眾號后臺回復:Python視覺實戰(zhàn)項目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學校計算機視覺。在「小白學視覺」公眾號后臺回復:OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學習進階。交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發(fā)送廣告,否則會請出群,謝謝理解~