前言
本文的目的是总结和记录我自己在使用jupyter notebook过程中,学到的一些非常好用的功能或者容易遗忘小技巧。
模式切换与快捷键
用了好久的jupyter notebook,才知道原来它还有两种不同的模式:命令模式和编辑模式,以下列出在模式切换和不同模式下功能的快捷键:
式切换
- ESC:进入命令模式
- Enter:进入编辑模式
模式下的常用的快捷键
- Ctrl+Enter:运行本单元
- Shift+Enter:运行本单元,选中下个单元
- Y:转入代码状态
- M:转入makedown状态
- R:转入raw状态
- A:在上方插入新的单元
- B:在下方插入新的单元
- DD:删除单元
- Z:恢复操作
- Shift+M:合并选中的单元
- L:显示或隐藏行号
- II:中断内核
- 00:重启内核
辑模式下的常用的快捷键
由于编辑模式下的快捷方式与其他编辑器类似,所以就不特地列出,这里只记录一个拆分单元的功能。
- Ctrl+Shift+-:分割单元
激活和关闭交互式的matplotlib图标
在jupyter notebook中使用matplotlib画图,在普通情况下,只能输出图标格式化后静态的的图像,而没有交互的功能。如果我们需要交互功能需要在cell中执行如下命令:
1 | %matplotlib notebook |
如果不再需要交互式的输出,则可以需要关闭它:
1 | %matplotlib inline |
这种以%或者%%开头的命令叫做magic命令,查询magic命令可以使用%lsmagic来将其打印出来。
除了%符号,jupyter提供“!”作为unix command的前导符合,来运行shell命令,当然只针对部分命令,如:
1 | !python --version |
在jupyter 中执行可执行文件
尽管jupyter提供magic命令,但是毕竟只是少量的,那么执行第可执行文件或者cmd/bash命令可能需要通过其他方法,如下以一条复合bash命令为例:
1 | def printfile(name): |
为Jupyter Notebook添加目录功能
在jupyter中添加侧边栏目录
原始的Jupyter是不支持markdown添加目录功能的,不过我们可以可以利用Jupyter notebook
extensions去使得这种功能实现,首先安装jupyter_contrib_nbextensions:
1 | conda install -c conda-forge jupyter_contrib_nbextensions |
当安装好以后就会发现jupyter上方的菜单中多出了一个Nbextensions的菜单如下图:
将Tabel of Contents勾选即可,而在Nbextension还有需要有趣的插件可以去探索。
在文本头增目录
上面是使用插件生成侧边栏目录,如果只需要在文章的头部生成目录则可以用另外的方法。在纯Markdown文本中是能够使用“[TOC]”来自动生成文章头部目录的,但是在jupyter notebook的cell中无法使用,我们只能通过创建文本内部的链接,手动创建目录,如下所示:
修改jupyter的工作空间
修改工作空间有两种方法,一是在进入需要修改的目录中,然后在这个目录下打开jupyter,那么打开的jupyter notebook就会将当前目录做工作空间;二是修改配置文件。
第一种放简单灵活,是我们的首选,但是在Window下命令行启用jupyter,有时候修改工作空间是无效的,所以只能修改配置文件了。配置文件为:jupyter_notebook_config.py,如果不存在则需要手动创建,执行如下命令:
1 | jupyter notebook --generate-config |
在jupyter_notebook_config.py文件中找到如下内容,并将c.NotebookApp.notebook_dir的值修改为需要指定的目录:
1 | # The directory to use for notebooks and kernels. |
为jupyter添加内核
添加新python内核
以python为例,一般可能有两种情况需要增加内核,一是系统中同时安装了不同版本的python,如python2和python3,二是使用conda等工具创建的不同的python运行环境,在这里我假定是第二种情况。
首先需要安装ipykernel,注意是在要添加的环境中,如下我们先创建了一个虚拟环境,然后在其中安装ipykernel:
1 | conda create -n py36-test python=3.6 |
然后执行如下命令,注意同样是需要在要添加的环境下,下面命令中的python指的就是你要添加的内核,–name是你指定jupyter中添加内核的名字:
1 | python -m ipykernel install --name py36-test |
安装好后就可以在jupyter notebook中Kernel菜单的Change Kernel中看到
查看和删除内核
查看内核:
1 | jupyter kernelspec list |
删除内核:
1 | jupyter kernelspec remove kernelname |