cover

90. Jupyter Notebook 简明指南#

90.1. 介绍#

Jupyter Notebook 是一个能运行 Python 代码的 Web 应用程序,它是目前进行机器学习实践的主流工具。本次实验将介绍 Jupyter Notebook 环境的基本操作。

90.2. IPython#

如果你对 Python 比较熟悉,应该都听说过 IPython,它是一种基于 Python 的交互式解释器。相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能。

IPython

IPython 之后,就出现了 IPython Notebook,它完整地继承了 IPython 的交互式特性,同时以 Web 形式运行。IPython Notebook 的出现,让数据分析和机器学习的过程变得高效。

90.3. Jupyter Notebook#

再之后,在谷歌、微软等互联网巨头的赞助下,IPython Notebook 发展成为更加成熟和完善的开源项目,并更名为 Jupyter Notebook。相信部分朋友对这个名字和下面的界面并不陌生。

https://cdn.aibydoing.com/images/2024/06/document-uid214893labid4814timestamp1519985164368-1718756646.png

Jupyter Notebook 已经成为现代处理数据的必备工具。从数据清理、数据可视化、数据分析,再到后面的建立机器学习或深度学习模型,都可以在 Jupyter Notebook 完成。同时,Jupyter Notebook 可以保留代码运行后的结果,方便内容的传播,以及回顾做过的工作。

Note

你可以在本地使用 pip install notebook 安装 Jupyter Notebook,但我更推荐直接在浏览器中使用 GetVM 提供的 Jupyter Notebook 在线环境。

90.4. 单元格#

内容结构中最基本的组成单位被称之为单元格,一节完整的实验由若干个单元格按顺序构成。如下图所示,当你使用鼠标在课程界面【单击】时,就会选中相应的单元格,被处于选中状态的单元格的左侧会出现一条蓝色的竖线。

https://cdn.aibydoing.com/images/2024/06/download-1718756806.png

90.5. 单元格的两种模式#

每一个单元格会有两种模式,分别是 Markdown(文本) 和 Code(代码)。课程中,教学内容一般都是以 Markdown 单元格展示,而你需要动手练习的代码将在 Code 单元格中执行。你可以通过顶部的选项来切换单元格的模式,也可以使用快捷键 M 切换到 Markdown 模式,使用快捷键 Y 切换到 Code 模式。

https://cdn.aibydoing.com/images/2024/06/download-1-1718756827.png

90.6. 单元格菜单栏#

Jupyter Notebook 每个单元格的后面提供了一个菜单栏,可以对单元格进行操作。如下图所示,这些菜单栏包括了单元格的复制、上移、下移、删除等操作。

https://cdn.aibydoing.com/images/2024/06/download-2-1718756835.png

90.7. 运行代码#

你可能会有疑问,那就是自己在哪里书写练习代码并执行呢?当前,这一切都是在 Code 单元格中完成。如下图所示,当你在 Code 单元格中书写 print('hello, world!') 时,点击顶部菜单栏的运行按钮 ,相应的代码就会立即执行,并在单元格的下方显示输出内容。

https://cdn.aibydoing.com/images/2024/06/download-3-1718756843.png

通常,我们更喜欢使用 Jupyter Notebook 的快捷键。当你需要执行一个单元格时,可以通过快捷键 Shift + Enter 来运行。使用快捷键的好处是你的双手不需要离开键盘。

# 选中单元格,并按 Shift + Enter
print('hello world!')

文档内容都书写在 Markdown 单元格中。如果你一不小心双击了相应单元格进入到编辑状态。不用担心,选中相应单元格,并同样使用快捷键 Shift + Enter 执行,就可以恢复到先前的状态。

90.8. 单元格执行顺序#

无论是 Markdown 单元格,还是 Code 单元格,它们在课程中都是按照从上到下的顺序依次执行的。后面的单元格需要等待前面的单元格执行完成后,才能继续执行。执行完成的单元格左侧会出现 In [序号] 的标志,例如:

https://cdn.aibydoing.com/images/2024/06/download-4-1718756853.png
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 即可。

https://cdn.aibydoing.com/images/2024/06/uid214893-20190813-1565661913124-1718756867.png

现在执行重启内核操作试一试,然后再运行下方单元格。

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 将为未来的学习工作提供极大便利。


○ 欢迎分享本文链接到你的社交账号、博客、论坛等。更多的外链会增加搜索引擎对本站收录的权重,从而让更多人看到这些内容。