90. Jupyter Notebook 简明指南#
90.1. 介绍#
Jupyter Notebook 是一个能运行 Python 代码的 Web 应用程序,它是目前进行机器学习实践的主流工具。本次实验将介绍 Jupyter Notebook 环境的基本操作。
90.2. IPython#
如果你对 Python 比较熟悉,应该都听说过 IPython,它是一种基于 Python 的交互式解释器。相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能。
IPython 之后,就出现了 IPython Notebook,它完整地继承了 IPython 的交互式特性,同时以 Web 形式运行。IPython Notebook 的出现,让数据分析和机器学习的过程变得高效。
90.3. Jupyter Notebook#
再之后,在谷歌、微软等互联网巨头的赞助下,IPython Notebook 发展成为更加成熟和完善的开源项目,并更名为 Jupyter Notebook。相信部分朋友对这个名字和下面的界面并不陌生。
Jupyter Notebook 已经成为现代处理数据的必备工具。从数据清理、数据可视化、数据分析,再到后面的建立机器学习或深度学习模型,都可以在 Jupyter Notebook 完成。同时,Jupyter Notebook 可以保留代码运行后的结果,方便内容的传播,以及回顾做过的工作。
Note
你可以在本地使用
pip
install
notebook
安装 Jupyter Notebook,但我更推荐直接在浏览器中使用
GetVM
提供的 Jupyter Notebook 在线环境。
90.4. 单元格#
内容结构中最基本的组成单位被称之为单元格,一节完整的实验由若干个单元格按顺序构成。如下图所示,当你使用鼠标在课程界面【单击】时,就会选中相应的单元格,被处于选中状态的单元格的左侧会出现一条蓝色的竖线。
90.5. 单元格的两种模式#
每一个单元格会有两种模式,分别是 Markdown(文本) 和
Code(代码)。课程中,教学内容一般都是以 Markdown
单元格展示,而你需要动手练习的代码将在 Code
单元格中执行。你可以通过顶部的选项来切换单元格的模式,也可以使用快捷键
M
切换到 Markdown 模式,使用快捷键
Y
切换到 Code 模式。
90.6. 单元格菜单栏#
Jupyter Notebook 每个单元格的后面提供了一个菜单栏,可以对单元格进行操作。如下图所示,这些菜单栏包括了单元格的复制、上移、下移、删除等操作。
90.7. 运行代码#
你可能会有疑问,那就是自己在哪里书写练习代码并执行呢?当前,这一切都是在
Code 单元格中完成。如下图所示,当你在 Code 单元格中书写
print('hello,
world!')
时,点击顶部菜单栏的运行按钮
▶,相应的代码就会立即执行,并在单元格的下方显示输出内容。
通常,我们更喜欢使用 Jupyter Notebook
的快捷键。当你需要执行一个单元格时,可以通过快捷键
Shift
+
Enter
来运行。使用快捷键的好处是你的双手不需要离开键盘。
# 选中单元格,并按 Shift + Enter
print('hello world!')
文档内容都书写在 Markdown
单元格中。如果你一不小心双击了相应单元格进入到编辑状态。不用担心,选中相应单元格,并同样使用快捷键
Shift
+
Enter
执行,就可以恢复到先前的状态。
90.8. 单元格执行顺序#
无论是 Markdown 单元格,还是 Code
单元格,它们在课程中都是按照从上到下的顺序依次执行的。后面的单元格需要等待前面的单元格执行完成后,才能继续执行。执行完成的单元格左侧会出现
In
[序号]
的标志,例如:
a = 1
b = 2
# 需要先执行上方单元格给 a,b 变量赋值才能执行我呢~
a + b
为了方便,Jupyter Notebook 中的
print()
打印操作并不是必须的。例如上方的单元格,
a +
b
就能输出结果。
90.9. 代码补全#
当我们在写代码的时候,代码自动补全可以极大地节省时间。而在
Jupyter Notebook 中,可以通过
Tab
键激活代码补全功能。
# 当我们在使用 import 导入模块时,只需输入 im ,然后按 Tab 键
im
值得注意的是,某个模块下包含函数的自动补全,必须要导入模块之后才会生效。举例来讲,只有当你运行了
import
numpy
as
np
,才能够使用 Tab 键自动补全
np.
下面的类和相关函数。
90.10. 函数使用建议#
对于一个陌生的函数不够了解,那么可以通过
shift
+
tab
快捷键查看使用建议。
# 运行导入 random 模块
import random
# 鼠标点击至 random.randint 并按 shift + tab 查看使用建议
random.randint
你应该能看到如下的函数介绍气泡内容:
Signature: random.randint(a, b) Docstring: Return random integer in range [a, b], including both end points.
90.11. 单元格的执行状态#
对于复杂度高的代码,往往会意味着更长的执行等待时间。在
Jupyter Notebook
中,当一个单元格处于执行状态时,单元格前面会出现
In
[*]
符号,只有执行完成的单元格,
[]
中的
*
才会变成相应的
序号
。
除此之外,你可以通过页面右上角的 Kernel 状态指示器判断内核占用情况。如果 Python 字符右边出现了实心圆圈 ◉,代表内核处于占有状态。而空心圆圈 ◯ 则代表内核处于空闲状态。当然,也可能出现链接断开的符号,那就代表着内核已经断开链接,你可能需要刷新页面或重启实验环境。当然,蓝桥云课会尽力让你避免遇到内核断开的状态。
90.12. 重启内核#
有些时候,当你在运行复杂的代码时,可能会造成实验环境资源占用大而 Notebook 出现「假死」的现象。在遇到这种情况时,你可能不希望重新关闭再打开实验,那么可以执行「重启 Notebook 内核」操作。
重启内核的按钮在环境的顶部,点击 样式按钮后会弹出确认对话框,点击 Restart 即可。
现在执行重启内核操作试一试,然后再运行下方单元格。
a
如果重启完内核后,执行上方单元格会报错
NameError
。原因在于重启内核后之前全部的单元格运行状态都会重置,即上文中我们赋值过的变量
a
又会回到未赋值状态。现在你应该明白重启内核的作用和影响了吧。
90.13. 强制终止#
有的时候,如果代码运行时间过长,或者陷入死循环,我们会想到强制终止单元格的运行状态。此时,顶部的 按钮就发挥作用了。
运行下方无限循环代码,并执行强制终止操作。
import time
while True:
print("hello, shiyanlou.")
time.sleep(1)
90.14. 快捷键#
为了提高 Jupyter Notebook 的使用效率,其提供了一系列快捷键,我们挑选了常用的几个总结如下:
-
H
:查看所有快捷键。 -
S
:保存当前 Notebook 内容。 -
P
:调出 Notebook 命令栏。 -
B
:在当前单元格下方新建空白单元格。 -
M
:将单元格格式转换为 Markdown。 -
Y
:将单元格格式转换为 Code。 -
连续按
D
+D
:删除当前单元格。(慎用,推荐使用 X 剪切单元格代替,因为其可以起到删除效果,且删错了还可以粘贴回来) -
连续按
I
+I
+I
:强制中止内核(当某个单元格执行时间较长或卡住时,可以强行中止,中止后前序单元格状态依旧保留,非常好用。) -
Shift + Enter
:运行当前单元格内容。(当 Markdown 单元格处于编辑状态时,运行即可复原)
请注意,所有快捷键触发式,需保证单元格处于选中状态,而非编辑状态。
更多的 Jupyter Notebook 使用小技巧也可以阅读:Notebook Tips, Tricks, and Shortcuts
90.15. 总结#
在本实验中,我们学习了 Jupyter Notebook 的基本使用技巧,这对后续的学习非常重要。正如前面所说,Jupyter Notebook 在数据科学、机器学习、深度学习领域非常的流行,熟练运用 Jupyter Notebook 将为未来的学习工作提供极大便利。
○ 欢迎分享本文链接到你的社交账号、博客、论坛等。更多的外链会增加搜索引擎对本站收录的权重,从而让更多人看到这些内容。