Jupyter notebook 系列

Jupyter notebook系列(1):安装与使用(安装,虚拟环境的联接使用,windows远程连接linux的jupyter)

Jupyter notebook系列(2):使用技巧(快捷键,多行输出,多光标操作,Unix系统命令的使用,查看输入输出历史,保存记录点与分享,抑制文末输出,图片输出,多环境kernel切换)

Jupyter notebook系列(3):魔法函数(查询,运行外部程序,计时,加载文件,变量管理调试,shell交互,图片的显示,查询环境变量,显示运行内核函数,kernel切换)

Jupyter notebook系列(4):插件的安装使用(代码折叠,添加目录,变量监控,代码格式化,运行时间统计,自动补全,自动保存,运行结束提醒)

Jupyter notebook系列(5):主题的安装更换(主题颜色背景,字体字号大小,工具条可见,画图风格设置)

Jupyter notebook系列(6):更高级的配置Mark(显示行号,更改工作路径,使用sudo权限)

0、前言

jupyter notebook是一个在线编辑器,可以在网页上编辑程序,在编辑的过程中,每次编辑一行代码就可以运行一行代码,运行的结果也可以显示在代码的下方,方便查看。当所有的程序编写和运行完毕之后,还可以直接把编辑和运行之后的所有信息保存在文件中。

1、介绍两种模式

1.1 模式1:命令模式command mode

可以对cell等进行操作,快捷键对应于命令模式的快捷键

image-20201117102953672

1.2 模式2:编辑模式edit mode

可以对代码文本进行操作,快捷键对应于编辑模式的快捷键

image-20201117103013969

1.3 两种模式的切换

在一个cell中按下enter就进入edit mode,按下Esc进入command mode

2、常用快捷键

2.1 命令模式下的快捷键(按Esc进入命令模式)

F:查找并且替换
ctrl-shift-f:打开命令配置(界面中的小键盘也可以启动)
ctrl-shift-p:打开命令配置(界面中的小键盘也可以启动)

输入你想要的运行的命令即可搜索,比如我这里将一个cell移动到它下一个cell的下面:在一个cell中(在command模式下),然后按下 Ctrl + Shift + P ,输入 move ,键盘方向键选择要执行的命令即可,然后按下回车即可执行。

image-20201118094250990

Enter:进入编辑模式
P:打开命令配置
Shift-Enter:运行代码块,选择下面的代码块
Ctrl-Enter:运行选中的代码块
Alt-Enter:运行代码块并且插入下面
Y:把代码块变成代码(把整个cell变成代码)
M:把代码块变成标签(把整个cell变成Markdown)
R:清除代码块格式
1:把代码块变成heading1
2:把代码块变成heading2
3:把代码块变成heading3
4:把代码块变成heading4
5:把代码块变成heading5
6:把代码块变成heading6
K:选择上面的代码块
:选择上面的代码块
J:选择下面的代码块
:选择下面的代码块
Shift-上:扩展上面选择的代码块(是多选的含义,把现在的包含进去选择上一个)
Shift-K:扩展上面选择的代码块(是多选的含义,把现在的包含进去选择上一个)
Shift-下:扩展下面选择的代码块(是多选的含义,把现在的包含进去选择下一个)
Shift-J:扩展下面选择的代码块(是多选的含义,把现在的包含进去选择下一个)
A:在上面插入代码块
B:在下面插入代码块
X:剪切选择的代码块
C:复制选择的代码块
Shift-V:粘贴到上面
V:粘贴到下面
Z:撤销删除
DD:删除选中单元格
Shift-M:合并选中单元格,如果只有一个单元格被选中
Ctrl-S:保存并检查
S:保存并检查
L:切换行号(在这个cell中显示行号)
O:选择单元格的输出(打开或者关闭选中cell的输出,可以控制cell)
Shift-O:切换选定单元的输出滚动(打开或者关闭cell的输出是否可以滚动,不可滚动时全部显示)
H:显示快捷键(在没有使用Keyboard shortcut editor拓展的时候有效)
I:中断服务
O:重启服务(带窗口)
Esc:关闭页面
Q:关闭页面
Shift-L:在所有单元格中切换行号,并保持设置
Shift-空格(Space):向上滚动
空格(Space):向下滚动
Ctrl-Home:跳到第一个cell
Ctrl-End:跳到最后一个cell
Shift-鼠标选择:选择当前cell到选中cell的所有cell

2.2 编辑模式下的快捷键(按Enter进入命令模式)

Tab:代码完成或缩进
Shift-Tab:工具提示
Ctrl-]:缩进
Ctrl-[:取消缩进
Ctrl-A:全选
Ctrl-Z:撤销
Ctrl-/:评论
Ctrl-D:删除整行
Ctrl-U:撤销选择
Insert:切换重写标志
Ctrl-Home:跳到单元格起始处
Ctrl-上:跳到单元格起始处
Ctrl-End:跳到单元格最后
Ctrl-下:跳到单元格最后
Ctrl-左:跳到单词左边
Ctrl-右:跳到单词右边
Ctrl-删除:删除前面的单词
Ctrl-Delete:删除后面的单词
Ctrl-Y:重做
Alt-U:重新选择
Ctrl-M:进入命令行模式
Ctrl-Shift-F:打开命令配置
Ctrl-Shift-P:打开命令配置
Esc:进入命令行模式
Shift-Enter:运行代码块,选择下面的代码块
Ctrl-Enter:运行选中的代码块
Alt-Enter:运行代码块并且插入下面
Ctrl-Shift-减号:在鼠标处分割代码块
Ctrl-S:保存并检查
:光标下移
:光标上移

3、多行输出

一般情况下一个 Cell后只能输出一个结果

image-20201117151258983

若想要实现多行输出,请在Cell开头添加以下代码

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all' # 默认为'last',即输出最后一个结果

image-20201117151419862

4、?的使用

在使用过程中,我们难免会遇到一些我们并不清楚语法格式,查找官方文档是一种解决方案,不过在Jupyter Notebook里内置了快速链接官方文档的用法(类似 Stata 的help命令),在你需要查找的函数(或库名)前敲入?就可浏览快速语法说明。

4.1 单个?:快速查看文档,输出帮助提示,快速语法说明

python自带的函数help()可以获得函数对应的docstring,用iPython的?可以得到相同的结果:

image-20201117151808835

?几乎可以查看任何信息,包括对象的方法,甚至对象本身

对于自己编写的函数,?同样适用,但是前提是函数包含一个docstring

image-20201117151935594

4.2 ??:快速查看源码

如果没有显示源码的话,说明这个函数不是用Python写的,这种情况大多发生在Python的自建函数。

image-20201117152100676

5、TAB:自动补全

image-20201117152318645

6、多光标操作

Jupyter Notebook支持多光标操作,与 Sublime Text 类似。按住 Alt 拖拽鼠标选定操作区域后,再按一下右方向键→即可。点击任何位置返回单光标操作。

7、jupyter的cell可以作为unix command使用

IPython中可以使用Shell指令,避免多个窗口切换。具体方法为:在unitx command前面加入一个感叹号!
查看python版本:!python --version
运行python文件:!python myfile.py
查询安装的库:!pip list | grep pandas

Shell指令可以在这里学:Shell Tutorial

并且形如!ls!pwd的输出可以通过赋值保存下来(windows系统请用!dir这个命令)

contents = !ls
directory = !pwd

{var}可以把Python的对象在Shell指令中运行

message = "hello from Python"
!echo {message}

但是!cd并不能改变文件夹的路径,需要使用%cd来进行更换

image-20201118155108018

8、查看输入输出历史

输入历史

方法一:In返回输入列表

In是一个包含了历史输入的list,In[0]默认为空字符串,In[1]代表第一个输入

image-20201118141647085

单个下划线_包含了上一次的输出,两个下划线__包含了上上次的输出,以此类推,跳过没有输出的cell

print(In[1])

img

方法二 %history查看输入历史

%history -n 1-8

表示查看1-4次的输入 冒号前面是第几次输入

image-20201118141906372

输出历史

可以用两种方式查看输出

方法一:Out调用输出历史

Out返回一个含有输出的命令的序号及其输出组成的字典,两者皆可以通过索引获取元素。

image-20201118142608153

方法二:使用下划线表示输出

_表示上一个输出

__表示前两个输出

_num表示Out[num]

image-20201118142722245

9、在jupyter中设置link,需要设置两部分

  • 要跳到的位置(the destination)
    需要在要跳转到的位置添加下面语句:

    <a id='the_destination'></a>1
    

    这里的id取值任意赋值,下面在添加链接时要用

  • 需要添加链接的文字(an internal hyperlink to the destination),即点击该处可以跳转到the destination,在需要添加链接的文字后面加入:

    [需要添加连接的文字](#the_destination)1
    
  • 下面是一个例子:
    源码:
    这里写图片描述
    效果图:
    这里写图片描述

10、保存记录点

Jupyter Notebook 还有一个很酷的功能:记录点。你可以为当前的 notebook 文件创建一个记录点,保存当前文件的所有状态。创建记录点之后,你可以随时返回到当前的状态,撤销这期间做出的任何修改。

要创建一个新的记录点,你只需要在菜单栏上选择 File(文件)-> Save and Checkpoint(保存记录点)即可。点完之后,你就会在标题旁看到 Checkpoint 保存的提示:

image-20201118144304047

如果你想要返回到之前的 Checkpoint,你只需要在菜单栏上选择 File(文件)-> Revert to Checkpoint(返回到记录点),并点击对应的记录点的时间戳即可。

image-20201118144220206

11、分享文档

使用 Jupyter Notebook的一个好处是可以把.ipynb格式的文件另存为其他格式,再分享其他人。

img

分享 notebook 最简单的方式是直接使用 notebook 文件(.ipynb)。不过对于那些不使用 Jupyter 的人来说,你也可以这么做:

  • 使用菜单项 File > Download as > HTML 将 notebook 转换成 HTML(python也可以 他会自动吧In、Out等注释掉变成所有cell的穿行)。

  • 使用 gist 或 github 分享 notebook,它们都会对 notebook 进行渲染展示。

    • 如果你上传 notebook 到一个 github 仓库,你可以使用十分便利的mybinder服务来允许第三者半小时时间以交互性身份访问你的仓库。
  • 安装jupyterhub, 当你组织一个小型课程或研讨会没有心思关心学生的机器状况时,这是非常方便的。

  • 将 notebook 保存到比如 dropbox 中,然后将链接放到nbviewer. nbviewer将会渲染你存储在任何地方的notebook.

  • 使用 File > Download as > PDF 菜单将 notebook 保存为一个 PDF。如果你打算这么做,强烈推荐你阅读 Julius Schulz 非常棒的一篇文章Making publication ready Python notebooks.

  • 使用 Pelican 搭建一个关于数据科学博客( 译者注:可在这里查看译文 )

12、抑制末尾函数输出

当我们绘制图像的时候,有时图像上方会出现一个函数的输出,比如下面这个

image-20201118144010173

如果不想要这行输出,可以直接在代码末加上一个分号。

image-20201118144021809

13、图片视频音频等的输出

notebook 以 HTML 的方式进行展示,cell 的输出也可以是 HTML,所以事实上你可以返回任何东西:视频/音频/图像。

下面的例子我扫描图片文件,并输出它的缩略图。

import os
from IPython.display import display, Image
display(Image('./1.jpg', width=100))

image-20201118152634045

14、做一个PPT

(但我还没学会)

[译]27 个Jupyter Notebook的小提示与技巧 - Focus on ML & DM

Damian Avila的 RISE 允许你从已有的一个 notebook 创建一个 powerpoint 风格的报告。

你可以通过 conda 安装 RISE:

conda install -c damianavila82 rise

或通过 pip:

pip install RISE

然后执行下面的代码安装并启用扩展:

jupyter-nbextension install rise --py --sys-prefix
jupyter-nbextension enable rise --py --sys-prefix

LAST、参考文献

jupyter notebook简单使用教程 - 知乎
Jupyter Notebook使用笔记(一)_y4ung-CSDN博客
Python·Jupyter Notebook各种使用方法记录·持续更新_tina的博客-CSDN博客_jupyter notebook
Python·Jupyter Notebook各种使用方法_独木不林的博客-CSDN博客_jupyter怎么运行代码
使用Jupyter Notebook的12个小技巧 - 知乎
jupyter notebook之IPython输入输出历史—初学_直心I-CSDN博客
[译]27 个Jupyter Notebook的小提示与技巧 - Focus on ML & DM

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐