问题

Jupyter Notebook 有哪些奇技淫巧?

回答
Jupyter Notebook 的那些“闷骚”绝技,让你瞬间变身效率达人

别跟我提什么“代码助手”、“自动化脚本”,那些都是小儿科。今天咱们聊点硬核的,聊聊 Jupyter Notebook 里那些能让你眼前一亮、事半功倍的“奇技淫巧”。这玩意儿可不止是写写代码、看看结果那么简单,熟练运用这些技巧,你的 Notebook 会变得像你的大脑一样聪明,甚至更懂你。

1. Magic Commands:Notebook 的“秘密武器库”

你以为只有 Python 有“魔法”?错!Jupyter Notebook 里的 Magic Commands 就是它的“秘密武器库”。它们以 `%` 或 `%%` 开头,就像给你的代码注入了超能力。

`%run`:让你的脚本活起来

平时我们写 Python 脚本,运行起来就结束了。但如果我想把一个脚本里的变量、函数都带到当前的 Notebook 环境里呢?这时候 `%run` 就派上用场了。

```python
假设你有一个 my_script.py 文件
my_script.py
x = 10
def greet(name):
return f"Hello, {name}!"

%run my_script.py
print(x) 输出:10
print(greet("World")) 输出:Hello, World!
```

它会将脚本中的所有全局变量和函数加载到当前的 Notebook 环境中,就像你在当前 Notebook 里直接写了一样。这对于复用代码、组织大型项目非常有帮助。

`%time` 和 `%timeit`:给你的代码计时,知道谁是性能王者

想知道你的代码跑了多久?`%time` 给你一个大概的数字。想知道它平均跑多快,跑很多次取平均值?`%timeit` 就是你的专属性能测试仪。

```python
import time

%time time.sleep(1) 测量一次执行时间

%timeit [i2 for i in range(1000)] 测量列表推导式执行多次的平均时间
```

`%timeit` 会自动帮你循环执行代码,并给出最优的执行次数和重复次数,让你精确了解代码的性能瓶颈。

`%pwd` 和 `%cd`: Notebook 的“定位术”

你是不是经常在 Notebook 和文件系统之间切换?`%pwd` 可以直接告诉你当前 Notebook 所在的目录,`%cd` 则可以让你直接在 Notebook 里切换目录,省去了打开终端的麻烦。

```python
%pwd
输出当前工作目录

%cd ../ 切换到上一级目录
%pwd
```

`%matplotlib inline`(现在是默认设置,但了解一下也无妨):让你的图表直接在 Notebook 里“绽放”

在数据可视化领域,`%matplotlib inline` 是一个经典的 Magic Command。它告诉 Notebook 将 Matplotlib 生成的图表直接渲染在 Notebook 的输出区域,而不是弹出一个独立的窗口。虽然现在大多数环境下它已经是默认行为,但理解它的作用能让你更好地控制图表的显示方式。

`%%writefile`:把你的 Notebook 变成“代码生成器”

这是一个非常酷的 Magic Command!它可以将一个 cell 的内容直接保存到一个文件中。这对于将 Notebook 中的一部分代码抽离成独立的脚本非常有帮助。

```python
%%writefile my_new_script.py
def say_hello():
print("Hello from my_new_script.py!")

say_hello()
```

运行这个 cell 后,你的当前目录下就会生成一个名为 `my_new_script.py` 的文件,并且内容就是那个 cell 中的代码。之后你就可以用 `%run my_new_script.py` 来运行它了。

2. Cell Tagging:给你的 Notebook 加个“标签”,让管理更智能

想象一下,你的 Notebook 里有几十个、甚至上百个 cell,有些是数据加载,有些是数据预处理,有些是模型训练,还有些是可视化。如何快速找到你想执行的那些 cell?Cell Tagging 就是你的答案。

右键点击 cell 的空白区域,选择 “Cell metadata”。然后在打开的 JSON 结构中,添加一个 `tags` 字段,可以是一个字符串数组。

```json
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"tags": ["data_loading", "preprocessing"]
},
"outputs": [],
"source": "import pandas as pd df = pd.read_csv('data.csv')"
}
```

然后,你就可以通过 `nbconvert` 等工具,根据这些标签来选择性地运行或导出你的 Notebook 了。例如,只想运行所有标记为 `preprocessing` 的 cell:

```bash
jupyter nbconvert TagRemovePreprocessor.remove_cell_tags=preprocessing to notebook output notebook_without_preprocessing.ipynb your_notebook.ipynb
```

这个命令看起来有点复杂,但它的核心思想是:通过标签来筛选或排除某些 cell。

更实用的是,你可以在 Notebook 中利用 `nbformat` 和 `jupyter_nbformat_versions` 库来动态地读取和操作 Notebook 的元数据,实现更复杂的自动化流程。比如,你可以写一个 Notebook,扫描其他 Notebook 的 cell 标签,然后根据规则生成报告或者执行特定的代码块。

3. Keyboard Shortcuts:告别鼠标,飞一般的感觉

熟练掌握 Jupyter Notebook 的快捷键,能让你的操作效率呈几何级增长。这就像是学习打字要熟练指法一样,是成为 Notebook 大师的必经之路。

命令模式 (Command Mode 按 `Esc` 进入):
`a`: 在当前 cell 上方插入一个新 cell。
`b`: 在当前 cell 下方插入一个新 cell。
`dd`: 删除当前 cell。
`m`: 将当前 cell 切换为 Markdown cell。
`y`: 将当前 cell 切换为 Code cell。
`z`: 撤销删除上一个 cell。
`Shift + ↑/↓`: 向上/向下选择多个 cell。

编辑模式 (Edit Mode 按 `Enter` 进入):
`Ctrl + ]`: 增加当前行的缩进。
`Ctrl + [`: 减少当前行的缩进。
`Ctrl + /`: 注释/取消注释当前行或选中的多行。
`Ctrl + Shift + F`: 在当前 Notebook 中查找。
`Ctrl + F`: 在当前 cell 中查找。

更进阶的:
`Shift + Enter`: 运行当前 cell 并选中下一个 cell。
`Ctrl + Enter`: 运行当前 cell 但不选中下一个。
`Alt + Enter`: 运行当前 cell 并插入一个新 cell 在其下方。

记住这些快捷键,就像学会了“乾坤大挪移”,你的手指会感谢你的。

4. Extension:给 Notebook 加装“插件”,拓展无限可能

Jupyter 的强大之处还在于它的可扩展性。通过安装各种扩展,你可以为 Notebook 增加许多原先没有的功能。

`jupyter_contrib_nbextensions` 和 `jupyter_nbextensions_configurator`: 这两个是安装和管理 Notebook 扩展的“大管家”。安装后,你会在 Notebook 的主界面看到一个 “Nbextensions” 选项卡,里面有各种各样的功能可以选择。
Table of Contents (2): 自动生成一个左侧边栏的目录,根据你的 Markdown 标题来创建,非常方便浏览长 Notebook。
Codefolding: 可以折叠代码块,让你的代码看起来更整洁。
Hinterland: 在你输入代码时,提供更智能的代码补全建议。
Execute Time: 显示每个 cell 的执行时间和完成时间,对于分析执行流程非常有帮助。
Collapsible Headings: 可以折叠 Markdown 标题下的所有内容。

JupyterLab: 如果你觉得 Notebook 的界面已经不能满足你,可以尝试使用 JupyterLab。它是一个更现代、更强大的交互式开发环境,集合了 Notebook、终端、文件浏览器等多种工具,界面更像是一个IDE,扩展性也更强。

安装和配置这些扩展,你需要一些终端操作。例如,安装 `jupyter_contrib_nbextensions` 通常是这样的流程:

```bash
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install user
jupyter nbextensions_configurator enable user
```

然后你就可以在 Notebook 界面上配置你想要的扩展了。

5. Variable Inspector:你的“变量侦探”

在数据分析过程中,经常需要查看变量的状态,尤其是当你的 Notebook 中有大量变量时。传统的做法是手动 `print` 变量名,或者在调试器里逐个查看。但 Variable Inspector 扩展,可以让你在 Notebook 的侧边栏或者一个独立窗口里,实时查看当前所有变量的名称、类型、大小和部分值。这简直是调试的利器!

一旦安装了 `jupyter_contrib_nbextensions`,你可以在 Nbextensions 配置页面找到并启用 Variable Inspector。

6. 嵌入其他内容:让你的 Notebook 更“丰富多彩”

Notebook 不仅仅能显示代码和文本,它还能嵌入其他丰富的内容,让你的报告或演示更具吸引力。

嵌入图片/视频: 直接在 Markdown cell 中使用 `![alt text](image.png)` 或者 `

网友意见

user avatar
Jupyter Notebook 是一个 Web 应用程序,允许你把所有的说明性文字,数学公式,代码和可视化内容结合在一个可轻松共享的文档里。

类似的话题

  • 回答
    Jupyter Notebook 的那些“闷骚”绝技,让你瞬间变身效率达人别跟我提什么“代码助手”、“自动化脚本”,那些都是小儿科。今天咱们聊点硬核的,聊聊 Jupyter Notebook 里那些能让你眼前一亮、事半功倍的“奇技淫巧”。这玩意儿可不止是写写代码、看看结果那么简单,熟练运用这些技巧,.............
  • 回答
    讲实话,Jupyter Notebook 的出现,简直是给像我这样(曾经)埋头苦代码的人们,送来了一缕救命的阳光。在那之前,你得忍受什么?一份报告写出来,需要数据支撑,你得写代码跑一遍,把结果导出来,然后去 Word 或者 Pages 里复制粘贴,再配上图表。每次修改数据,就得重来一遍。效率低得让人.............
  • 回答
    数据分析之所以普遍选择Jupyter Notebook,而不是单纯地运行Python脚本或依赖Excel,主要是因为它提供了一种更为高效、灵活且易于协作的数据探索和沟通方式。这背后有着深刻的体验和实际需求的驱动。想象一下,你拿到一份新的数据集,需要从中挖掘价值。如果只用Python脚本,你可能需要不.............
  • 回答
    这个问题问得很有意思!其实,Jupiter 这个名字并不是“雷星”的直译,而它叫做“木星”同样有着深厚的历史和文化渊源。 咱们一步一步来聊聊这背后的故事。首先,我们需要明白的是,我们现在使用的“木星”这个名字,并非是直接翻译自拉丁文的“Jupiter”。“Jupiter”是罗马神话中的主神,也就是最.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有