Jupyter Notebook使用技巧

前言

本文的目的是总结和记录我自己在使用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
2
!python --version
!ls

在jupyter 中执行可执行文件

尽管jupyter提供magic命令,但是毕竟只是少量的,那么执行第可执行文件或者cmd/bash命令可能需要通过其他方法,如下以一条复合bash命令为例:

1
2
3
4
5
6
7
8
9
def printfile(name):
lines_str = ''
with open(name, 'r') as f:
lines = f.readlines()
lines_str = ''.join(lines)
print(lines_str)

os.system('ls | grep model* > test.txt')
printfile('test.txt')

为Jupyter Notebook添加目录功能

在jupyter中添加侧边栏目录

原始的Jupyter是不支持markdown添加目录功能的,不过我们可以可以利用Jupyter notebook
extensions去使得这种功能实现,首先安装jupyter_contrib_nbextensions:

1
conda install -c conda-forge jupyter_contrib_nbextensions

当安装好以后就会发现jupyter上方的菜单中多出了一个Nbextensions的菜单如下图:

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
2
# The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = u'D:\Jupyter'

为jupyter添加内核

添加新python内核

以python为例,一般可能有两种情况需要增加内核,一是系统中同时安装了不同版本的python,如python2和python3,二是使用conda等工具创建的不同的python运行环境,在这里我假定是第二种情况。

首先需要安装ipykernel,注意是在要添加的环境中,如下我们先创建了一个虚拟环境,然后在其中安装ipykernel:

1
2
3
conda create -n py36-test python=3.6
source activate py36-test
conda install ipykernel

然后执行如下命令,注意同样是需要在要添加的环境下,下面命令中的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
Compartir