Jupyter Notebook使用技巧

2022-02-16 15:53:22 浏览数 (1)

前言

为了更加方便快捷的使用Jupyter Notebook,本文将会介绍一些相关的使用技巧。

相关技巧

使用问号查看对象的相关信息

对于代码中的所有对象,包括:变量、函数、方法、模块、等等,可以在某个对象的前面后面添加一个?,以查看该对象的相关信息。

代码语言:javascript复制
def aaa():
	print('Hello World')
代码语言:javascript复制
?aaa

效果如下图:

对于我们自定义的函数,可以在函数名的前面后面添加两个?,这样,在显示出来的相关信息中会包含函数的源代码

代码语言:javascript复制
def aaa():
	print('Hello World')
代码语言:javascript复制
aaa??

效果如下图:

使用叹号执行Shell命令

在使用Jupyter Notebook编写代码时,只需要在Shell命令前添加一个!,就可以在notebook中执行Shell命令,完全不用来回切换。

举例:查看当前本机网络状态:

代码语言:javascript复制
!ipconfig

效果如下图:

除了执行Shell命令之外,还可以将执行结果赋值给Python变量:

代码语言:javascript复制
a = !ipconfig
print(a)
print(type(a))

关于输出

在notebook中运行单元格中的代码时,在默认情况下,单元格中最后一行的值会被自动输出:

代码语言:javascript复制
def aaa():
	print('Hello World')
18

输出效果如下图:

如果不想自动输出单元格中最后一行的值,可以在最后一行的行尾添加一个分号;

代码语言:javascript复制
def aaa():
	print('Hello World')
18;

输出效果如下图:

当前notebook中,如果希望单元格中每一行的值都被自动输出,可添加以下代码:

代码语言:javascript复制
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

输出效果如下图:

如果希望在所有的notebook中都自动输出单元格中每一行的值,可以修改或创建ipython_config.py配置文件。

文件路径:

  • Windows:C:Users用户名.ipython/profile_default/ipython_config.py
  • MacOS:/Users/用户名/.ipython/profile_default/ipython_config.py
  • Linux:/home/用户名/.ipython/profile_default/ipython_config.py

打开配置文件添加以下代码:

代码语言:javascript复制
c = get_config() 
c.InteractiveShell.ast_node_interactivity = "all"

跨单元格编码

需要注意的是,在notebook中:

  • 前面运行的单元格会将相关变量保存到内存中,从而后面运行的单元格可以继续使用这些变量
  • 关闭notebook的页面后,内存中保存的变量不会丢失
  • 如果当前notebookShutdownRestart了,那么内存中保存的所有变量都会丢失

建议:按照单元格从上到下的顺序编写代码并依次运行代码,否则,不仅可读性不好,而且容易出错。

支持Markdown语法

Jupyter Notebook支持Markdown语法,在工具栏的下拉选项中将单元格调整为Markdown即可。

关于Markdown的相关介绍可以查看文章《Markdown语法》

这里提醒一点,在插入图片时,可以直接点击菜单栏中的Edit,在打开的选项中点击Insert Image,这种操作方式优点是:将图片和notebook绑定在一起,在对notebook进行移动或其他操作时不用单独对图片进行处理;缺点是:notebook文件会变大,不能控制图片尺寸。

快捷键

在notebook中有两种单元格,分别为:

  • Code单元格:用来编写代码
  • Markdown单元格:用来将纯文本格式化为富文本

每种单元格都有两种模式,分别为:

  • 编辑模式:按Esc键或者点击单元格的外部,都可以切换到命令模式
  • 命令模式:按Enter键或者点击单元格的内部,都可以切换到编辑模式(对于运行之后的Markdown单元格,要双击单元格的内部,才能切换到编辑模式)

编辑模式下的快捷键:

快捷键

功能

Tab

增加缩进(4个空格)、代码自动补全

Shift Tab

减少缩进(4个空格)、查看对象的相关信息

Ctrl A(Command A)

全选

Ctrl Z(Command Z)

撤销

Ctrl Y(Shift Command Z)

恢复

Ctrl /(Command /)

注释、取消注释

Ctrl D(Command D)

删除行

Ctrl Home(Command Home)

跳转到单元格的开始处

Ctrl End(Command End)

跳转到单元格的结尾处

Esc

退出编辑模式并进入命令模式

Ctrl S(Command S)

保存并更新记录点文件

向上移动光标

向下移动光标

Ctrl Enter

运行当前单元格

Shift Enter

运行当前单元格,并选中下方的单元格(如果下方没有单元格,则在下方自动插入一个单元格并选中)

Alt Enter(Option Enter)

运行当前单元格,在下方自动插入一个单元格并选中

命令模式下的快捷键:

快捷键

功能

选中上方的单元格

选中下方的单元格

Shift ↑

扩展选中上方的单元格

Shift ↓

扩展选中下方的单元格

A

在上方插入一个单元格

B

在下方插入一个单元格

M

将Code单元格转换为Markdown单元格

Y

将Markdown单元格转换为Code单元格

S

保存并更新记录点文件

连按两次D

删除选中的单元格

Z

撤销对单元格的删除

F

查找并替换

X

剪切选中的单元格

C

拷贝选中的单元格

V

在下方粘贴单元格

Shift V

在上方粘贴单元格

Enter

退出命令模式并进入编辑模式

Ctrl Enter

运行选中的单元格

Shift Enter

运行选中的单元格,并选中下方的单元格(如果下方没有单元格,则在下方自动插入一个单元格并选中)

Alt Enter(Option Enter)

运行选中的单元格,在下方自动插入一个单元格并选中

扩展插件集nbextensions

扩展插件集nbextensions包含了一系列非常好用的插件,从而可以大大地扩展Jupyter Notebook的功能,并且增强Jupyter Notebook的交互式体验。

安装过程:

1.安装第三方库jupyter_nbextensions_configurator

它是jupyter notebook扩展插件集的配置器。

pip安装命令:

代码语言:javascript复制
pip install jupyter_nbextensions_configurator

conda安装命令:

代码语言:javascript复制
conda install jupyter_nbextensions_configurator

2.启动配置器

启动命令:

代码语言:javascript复制
jupyter nbextensions_configurator enable --user

此时启动jupyter notebook,会发现菜单多出来一个名为Nbextensions的选项卡。

3.安装第三方库jupyter_contrib_nbextensions

它就是jupyter notebook的扩展插件集。

pip安装命令:

代码语言:javascript复制
pip install jupyter_contrib_nbextensions

conda安装命令:

代码语言:javascript复制
conda install jupyter_contrib_nbextensions

3.安装相关的文件

以便可以通过第2步启用的配置器,对第3步安装的扩展插件集进行访问。

安装命令:

代码语言:javascript复制
jupyter contrib nbextension install --user

此时就会看到,在Nbextensions这个选项卡的配置器中就显示出了很多插件,点一下页面左上方这个小方框,把对勾勾掉,所有的插件都变为可用的了,可以按需使用。

nbextensions中的常用插件

插件名

功能

备注

Hinterland(代码提示)

每输入一个字母,都会弹出代码自动补全的菜单

Codefolding(代码折叠)

对Code单元格中的代码添加折叠的功能

Collapsible Headings(可折叠的标题)

根据标题对单元格进行折叠

Table of Contents(目录表)

将所有的标题显示在一个浮动窗口和一个导航菜单中

Autopep8(自动pep8)

按照pep8的规范对Code单元格中的Python代码进行格式化

需要安装autopep8这个第三方库。 pip安装命令:pip install autopep8 conda安装命令:conda install autopep8

Code prettify(代码美化)

格式化Jupyter Notebook支持的所有编程语言的代码

在格式化某种编程语言的代码之前,首先需要安装相应的第三方库或包,要想格式化Python代码,就需要安装yapf这个Google开源的第三方库。 pip安装命令:pip install yapf conda安装命令:conda install yapf

Code Font Size(代码字体大小)

在工具栏,提供增大以及减小代码字体的按钮

ExecuteTime(执行时间)

在执行的过程中,会显示在什么时刻开始执行;执行结束后,会显示执行时长和在什么时刻结束执行

AutoSaveTime(自动保存时间)

设置notebook自动保存的时间间隔

notebook被自动保存时,相应的记录点文件不会发生任何变化

highlighter(高亮显示工具)

对Markdown单元格中的文本进行高亮显示

Live Markdown Preview(实时Markdown预览)

在Markdown单元格的下方实时预览运行结果

Tree Filter(文件树过滤器)

在Files选项卡中,只需要输入关键字,就可以对下面的文件和文件夹进行过滤

导出为pdf文件

这里介绍两种导出为pdf文件的方法:

**方法一:**使用菜单导出。

点击File选项卡,选择Download as,选择Markdown(.md),将文件首先导出为.md格式,再使用Typora打开,并导出为pdf文件

**方法二:**使用命令导出(需要PandocXeLatex支持)。

首先安装Pandoc

代码语言:javascript复制
pip install pandoc

安装MikTex

这里抛出官网链接:https://miktex.org/download

安装过程很简单,一路Next,这里不再赘述。(安装之后在cmd测试一下xelatex能否使用)

点击File选项卡,选择Download as,选择LaTeX(.tex),将文件首先导出为.tex格式,为了使导出文件正常显示中文,打开该文件(本人用的是Sublime Text 3),找到代码documentclass[11pt]{article},在其后添加如下代码:

代码语言:javascript复制
usepackage{fontspec, xunicode, xltxtra}
setmainfont{Microsoft YaHei}
usepackage{ctex}

进入.tex文件所在目录,打开命令提示符窗口,输入:

代码语言:javascript复制
xelatex yourNotebookName.tex

如果是首次运行,则会安装大量的依赖文件,选择Install即可(过程比较漫长)。

(可以取消勾选弹框,使其自动安装所有需要的依赖)

运行结束后,就会发现在该目录下已经生成了pdf文件

第二种方法生成的pdf文件,要比方法一展示效果更加好。

结语

还有很多实用性技巧,暂且现在用不上,就没有总结,以后有时间继续补充。

0 人点赞