【问题标题】:Starting second Jupyter notebook where first left off从第一次停止的地方开始第二个 Jupyter 笔记本
【发布时间】:2020-03-12 22:22:33
【问题描述】:

上下文:

我开始使用 Jupyter Lab 自学一些新的库。我知道在 SO 上表达情感是严格禁止的,这将被编辑,但是哇,Jupyter 笔记本很酷!

无论如何,我在处理代码示例时会在 Markdown 中做笔记。它给了我在学习时编写自己的小教科书的想法。

例如,在笔记本 1 中,我谈到(自学)线性回归。它记下词汇,显示一些数学公式,然后通过一些代码示例进行操作。结束部分。

在笔记本 2 中,我开始讨论不同的指标,以展示回归模型的有效性。然后我想执行一些代码来计算这些指标......但是回归模型的所有代码都在最后一个笔记本中,我无法访问它。

问题:

有没有办法将这两个笔记本链接在一起,这样我就不必重新编写第一个笔记本的代码了?

我的尝试:

似乎最接近我想做的事情就是使用

%run notebook_01.ipynb

但是,这会引发错误。请注意,它似乎在搜索要运行的 .py 文件:

ERROR:root:File 'linear_regression01.ipynb.py' not found.

我发现一些问题/答案似乎对其他用户有效,但不适用于我。

编辑:我得到了魔法命令%run 工作,但是它运行并将整个第一个笔记本打印到第二个。我很高兴知道如何做到这一点,它确实实现了不必重新编码的目标,但它绝对会重新打印所有我不想要的东西。

【问题讨论】:

  • 如果你把%%capture作为第一行,你应该抑制输出。细胞魔法比io.capture_output() 抑制得更好,就像I've observed with seaborn output 一样,请特别参阅我2 月19 日21:57 的评论。
  • 顺便说一下,通常%%capture out 或变体将用于捕获单元格的输出,如here 所讨论的。对于%%capture,我们使用了一种技巧来抑制输出,因为它只会丢弃输出,因为它没有分配变量(source)。

标签: python ipython jupyter-lab


【解决方案1】:

如果你从命令行运行:

jupyter nbconvert --to script first_notebook.iynb

它将从您的第一个笔记本创建一个名为“first_notebook.py”的 python 文件。之后,您可以从该文件导入到您的第二个笔记本中:

import first_notebook

【讨论】:

  • 你好,我已经试过了,它和使用 %run 命令的效果一样。它具有不被io.capture_output()抑制的负面影响
【解决方案2】:

好的,我通过抑制输出找到了答案:

只需将其放在第二个笔记本的顶部即可:

from IPython.utils import io
with io.capture_output() as captured:
    %run your_linked_notebook.ipynb 

这将导致您要链接的笔记本运行,允许您使用其中的任何数据,但不必查看其中的所有输出和可视化。

如果您正在处理大量数据或链接大量执行昂贵计算的笔记本,这可能不是一个好方法,但对于大多数人来说可能会奏效。

如果有一个不涉及运行链接的笔记本的答案,我会很高兴看到它。

【讨论】:

  • 如果您只是使用整个单元格,则可以将这两行替换为 %%capture 单元格魔法。加上%%capture 似乎比io.capture_output() 抑制更多的输出类型。我已经看到了与 seaborn 的不同之处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 2018-09-23
相关资源
最近更新 更多