Jupyter Notebook 快速参考指南

必备快捷键和神奇命令

目录

使用基本的快捷键、魔法命令和工作流程技巧,快速提升你的数据科学和开发体验,从而启动 Jupyter Notebook 生产力

jupyter notebook ui

Jupyter Notebook 已成为交互式计算、数据分析和机器学习工作流程的事实标准。无论你使用 Python 进行数据科学,还是在进行 AI 模型实验或代码原型设计,掌握 Jupyter 的键盘快捷键和魔法命令都能显著提高你的工作效率。

这份速查表涵盖了每个 Jupyter 用户都应掌握的最基本命令和快捷键,从基本的单元格导航到能简化工作流程的高级魔法命令。如果你是 Python 开发的新手,你可能会发现我们的 Python 速查表 对于理解在 Jupyter 单元格中无缝工作的 Python 语言结构也很有帮助。

了解命令模式与编辑模式

Jupyter Notebook 以两种不同的模式运行,这决定了哪些键盘快捷键可用:

  • 命令模式(通过按 Esc 激活):控制单元格级别的操作,如创建、删除和转换单元格
  • 编辑模式(通过按 Enter 激活):允许你编辑单元格中的内容

最重要的快捷键是按 H 进入命令模式,这会显示完整的键盘快捷键帮助对话框。当你忘记某个特定快捷键时,这是你的快速参考。

命令模式的关键快捷键

单元格导航与执行

Jupyter 的核心工作流程围绕高效运行单元格展开:

  • Shift + Enter:运行当前单元格并自动选择下一个单元格。这是按顺序执行代码时最常用的快捷键。
  • Ctrl + Enter:运行当前单元格但不跳转到下一个单元格。当你需要多次重新运行某个单元格时非常有用。
  • Alt + Enter:运行当前单元格并在下方插入一个新单元格。在需要频繁添加新单元格的迭代开发中非常理想。

单元格管理

高效管理笔记本结构对于保持整洁、有条理的笔记本至关重要:

  • A:在当前单元格上方插入一个新单元格
  • B:在当前单元格下方插入一个新单元格
  • D, D(按两次 D):删除当前单元格。小心使用这个快捷键!
  • Z:撤销上一次的单元格删除。当你不小心删除了重要单元格时,这是个救星。
  • Shift + M:合并所选单元格。使用 Shift + JShift + K 选择多个单元格,然后合并它们。

单元格类型转换

快速切换单元格类型对于创建良好的文档笔记本至关重要:

  • Y:将单元格转换为代码
  • M:将单元格转换为 Markdown
  • R:将单元格转换为原始格式(不执行,适用于笔记)
  • 16:将单元格转换为标题级别 1 到 6,用于结构化文档

内核操作

在处理长时间运行的计算或调试时,内核控制是必不可少的:

  • I, I(按两次 I):中断内核。当你需要停止失控的计算时,这是关键操作。
  • 0, 0(按两次 0):重启内核。当你需要清除所有变量并重新开始时使用这个操作。

显示与导航

  • L:切换当前单元格的行号。调试和引用特定行时非常有用。
  • O:切换单元格输出。在演示时隐藏输出以保持笔记本整洁。
  • H:显示键盘快捷键帮助对话框

编辑模式的关键快捷键

在单元格内编辑代码时,这些快捷键与常见文本编辑器功能相似:

文本编辑

  • Tab:代码补全或缩进。Jupyter 的自动补全功能强大且上下文感知。
  • Shift + Tab:显示光标下对象的提示/文档。这对于在不离开笔记本的情况下探索 API 非常有用。
  • Ctrl + ]:缩进所选行
  • Ctrl + [:取消缩进所选行
  • Ctrl + /:切换所选行的注释。调试时快速注释代码至关重要。

导航

  • Ctrl + A:选择单元格中的所有文本
  • Ctrl + Z:撤销
  • Ctrl + Shift + ZCtrl + Y:重做
  • Ctrl + Home:跳到单元格开头
  • Ctrl + End:跳到单元格结尾
  • Ctrl + 左箭头:将光标向左移动一个词
  • Ctrl + 右箭头:将光标向右移动一个词

模式切换

  • Esc:从编辑模式切换到命令模式

魔法命令:提升你的工作效率

魔法命令是扩展 Jupyter 功能的特殊指令。它们分为两种类型:行魔法命令(以 % 开头),它们作用于单行;单元格魔法命令(以 %% 开头),它们作用于整个单元格。

性能分析

理解代码性能对于优化至关重要。Jupyter 提供了内置的计时命令:

# 时间单次执行
%time sum(range(1000000))

# 时间多次执行并取平均值(更准确)
%timeit sum(range(1000000))

# 时间整个单元格
%%time
total = 0
for i in range(1000000):
    total += i

%timeit 命令尤其有价值,因为它运行代码多次并提供执行时间的统计信息,使其非常适合对同一问题的不同方法进行基准测试。

运行外部脚本

%run 魔法命令允许你在笔记本中执行外部 Python 脚本,使代码模块化变得容易:

%run my_script.py

当你在处理较大的项目并希望将可重用的函数保留在单独的文件中时,这尤其有用。如果你正在管理 Python 环境,你可能会使用 uvvenv 进行环境管理,%run 与这些设置无缝配合。

包管理

你可以直接从笔记本中安装和管理 Python 包:

!pip install numpy pandas matplotlib
!conda install scipy

这消除了在终端和笔记本之间切换的需要,从而简化了开发工作流程。! 前缀执行 shell 命令,我们将在下面进一步探讨。

可视化

使用以下命令进行数据可视化:

%matplotlib inline

这确保图表直接在笔记本单元格中渲染,提供无缝的可视化体验。你还可以使用 %matplotlib widget 在 JupyterLab 中进行交互式图表。

文件操作

%%writefile 单元格魔法命令将单元格内容写入文件:

%%writefile example.py
def hello_world():
    print("Hello, World!")
    return True

这在从笔记本中生成脚本或保存代码片段时非常有用。相反,你可以使用标准的 Python 文件操作或 shell 命令读取文件。

Shell 命令

直接从笔记本单元格中执行 shell 命令:

# 单行 shell 命令
!ls -l
!pwd
!git status

# 多行 shell 命令
%%bash
echo "Hello from Bash"
ls -l
find . -name "*.py" | head -10

这种集成对于文件管理、版本控制操作和系统管理任务非常强大,无需离开笔记本环境。

探索可用的魔法命令

要发现所有可用的魔法命令:

# 列出所有魔法命令
%lsmagic

# 获取特定魔法命令的帮助
%timeit?
%matplotlib?

在任何魔法命令后使用 ? 操作符会显示其文档、参数和使用示例。这是探索 Jupyter 能力的绝佳方式。

高级技巧与最佳实践

组织你的笔记本

  1. 大量使用 Markdown 单元格:文档良好的笔记本更容易理解和维护。使用标题级别(1-6)创建清晰的结构。
  2. 保持单元格专注:每个单元格应有一个明确、清晰的目的。这使调试更容易并提高可读性。
  3. 使用单元格执行编号:执行编号(In [1],In [2] 等)有助于跟踪执行顺序,这对于单元格可能按非顺序运行时至关重要。

处理大型笔记本

当笔记本变大时,这些技术有助于保持组织:

  • 使用目录扩展(如果可用)进行导航
  • 将相关部分拆分为单独的笔记本
  • 使用 %%writefile 将可重用的代码提取到 Python 模块中
  • 定期重启内核并运行所有单元格以确保可重复性

与其他工具的集成

Jupyter 笔记本与现代 Python 工具集成得非常好。如果你在使用 LLM 并需要结构化输出,你可以将笔记本与工具集成,如 Ollama 用于结构化 LLM 输出。对于网络爬虫和数据处理,你可能会使用与我们之前在 HTML 到 Markdown 转换指南 中讨论的库类似的 HTML 到 Markdown 转换库。

调试工作流程

  1. 使用 %debug 魔法命令在异常后进入调试器
  2. 使用 %pdb on 自动在异常时进入调试器
  3. 打印语句和 %timeit 有助于识别性能瓶颈
  4. 当变量进入意外状态时,重启内核 (0, 0)

自定义

你可以通过进入 Jupyter 笔记本菜单中的 HelpKeyboard Shortcuts 来自定义键盘快捷键。这允许你根据特定的工作流程偏好定制环境。

结论

掌握 Jupyter Notebook 的快捷键和魔法命令将它从一个简单的代码编辑器转变为一个强大的交互式计算环境。从记忆最常用的快捷键(Shift+EnterEscABD+DMY)开始,然后逐渐将魔法命令融入你的工作流程。投入时间学习这些命令将带来生产力和工作流程效率的显著提升。

记住:在命令模式下随时按 H 查看完整的快捷键参考,并使用 %lsmagic 探索所有可用的魔法命令。快乐编码!

有用的链接

外部参考