1. 介绍
Jupyter Notebook是当下解决Python中的机器学习/数据科学任务的最常用的环境之一。简单来说,Jupyter Notebook是一个客户端-服务器应用程序,用于在浏览器中运行能够同时包含代码和富文本元素(如段落,方程式等)的文档。
接下来,我们一起来学习一些关于Jupyter Notebook使用的简单技巧。我们将从有用的快捷方式开始,最后添加主题,自动生成的目录等。
2. 快捷键
快捷键对于加速编写代码非常有用。与Jupyter Notebook交互的方法有两种:命令模式和编辑模式。有些快捷方式仅在一种模式或另一种模式下有效,而另一些快捷方式在两种模式下均通用。
两种模式中都常见的一些快捷方式是:
- Ctrl + Enter:运行所有选定的单元格
- Shift + Enter:运行当前单元格并移动下一个单元格
- Ctrl + s:保存笔记本
为了进入Jupyter命令模式,我们需要按Esc键,然后按以下任意命令:
- H:显示Jupyter Notebook中可用的所有快捷方式
- Shift +向上/向下箭头:同时选择多个笔记本单元(选择多个单元后按Enter将使它们全部运行!)
- A:在上方插入一个新单元格
- B:在下面插入一个新单元格
- X:剪切选定的单元格
- Z:撤消删除单元格
- Y:将单元格的类型更改为Code
- M:将单元格类型更改为Markdown
- Space:向下滚动笔记本
- Shift +Space:向上滚动笔记本
为了进入Jupyter编辑模式,我们需要依次按Enter和以下任何命令:
- Tab:代码完整说明
- Ctrl +]:增加缩进
- Ctrl + [:减少缩进
- Ctrl + z:撤消
- Ctrl + y:重做
- Ctrl + a:全选
- Ctrl + Home:将光标移到单元格开始
- Ctrl + End:将光标移到单元格的末尾
- Ctrl +左键:向左移动光标一词
- Ctrl +右键:将光标向右移动一词
3. Shell命令和软件包安装
我们可以通过在单元格的开头添加感叹号的方式,在Jupyter笔记本单元格中运行Shell命令,目前只有极少数用户意识到这一点。例如,使用!ls运行单元 ,将返回当前工作目录中的所有项目。用!pwd运行单元,将打印出当前目录的文件路径。
同样的技巧也可以应用于在Jupyter笔记本中安装Python软件包。
- !pip install numpy
4. Jupyter主题
此外,我们可以更改Jupyter笔记本的外观,则可以安装具有不同主题集合的软件包。默认的Jupyter主题类似于图中的主题。
我们可以将软件包直接安装在笔记本中:
- !pip install jupyterthemes
我们可以运行以下命令来列出所有可用主题的名称:
- !jt -l
- # Cell output:
- # Available Themes:
- # chesterish
- # grade3
- # gruvboxd
- # gruvboxl
- # monokai
- # oceans16
- # onedork
- # solarizedd
- # solarizedl
最后,我们可以使用以下命令选择一个主题(在本示例中,我决定使用solarized1主题):
- !jt -t solarizedl
只要你运行了此命令然后也刷新了页面,Jupyter笔记本将如图所示。
如果你想随时返回到原始的Jupyter笔记本主题,则可以运行以下命令并刷新页面。
- !jt -r
5. Jupyter笔记本扩展
笔记本扩展可以用于增强用户体验并提供多种个性化技术。在此示例中,使用 nbextensions 库来安装所有必需的小部件(在这里,建议首先通过终端安装软件包,然后打开Jupyter笔记本)。nbextensions库利用不同的Javascript模型来丰富Jupyter笔记本的前端。
- !pip安装jupyter_contrib_nbextensions
- !jupyter contrib nbextension安装--system
只要你把 nbextensions安装成功,你会发现,在你的Jupyter笔记本电脑主页上会多出一个额外的标签Nbextensions。
通过单击Nbextensions选项卡,我们可以看到可用小部件的列表。在这里,我启用图所示的选项作为示例。
另外,我罗列了一些我最喜欢的扩展小部件如下所示:
(1) Table of Contents
从markdown标题自动生成目录。
(2) Snippets
用于加载公共库并创建示例图的示例代码,您可以将它们用作数据分析的起点。
(3) Hinterland
Jupyter Notebook的代码自动完成功能。
除了上面列举的这三个, nbextensions 库提供了非常多的扩展小部件,你可以尝试勾选上不同的小部件,去探索其有趣的扩展功能!
6. 输出所有命令行
在默认情况下,Jupyter Notebook只会将单元格中最后一行命令作为输出行来输出结果。那么,如果我们希望Jupyter Notebook自动帮我们输出所有命令,而不必使用 print()逐条命令输出,则可以在代码的开头添加以下代码行。
- from IPython.core.interactiveshell import InteractiveShell
- InteractiveShell.ast_node_interactivity = "all"
此外,还可以通过将文本括在美元符号($)之间来在Markdown单元中编写LaTex。
7. 笔记本幻灯片
通过对Jupyter Notebook进行如下操作: View -> Cell Toolbar -> Slideshow ,然后为笔记本中的每个单元格选择幻灯片配置,可以创建Jupyter笔记本的幻灯片演示文稿 。
最后,通过转到终端并输入以下命令,便可以创建幻灯片演示文稿。
- pip install jupyter_contrib_nbextensions
- # and successively:
- jupyter nbconvert my_notebook_name.ipynb --to slides --post serve
8. 魔鬼命令
python的魔术命令是Ipython在普通的python语法基础之上的增强功能,可用于执行某些特定命令,例如:内联绘图,打印单元格的执行时间,打印运行单元格的内存消耗等等。
同时,python魔法命令是以%作为前缀,仅以单个%符号作为开头,则作用于单行输入(放置命令的位置);如果以两个%%作为开头的魔术命令 ,则是将应用于整个单元格中。
使用以下命令可以打印出所有可用的魔术命令:
- %lsmagic