【发布时间】:2015-11-27 12:26:23
【问题描述】:
我有两个不同的 Jupyter 笔记本,用于两个不同的项目。我想将它们合并到同一个笔记本上。
一种方法是将单元格从一个复制到另一个,但对于包含许多单元格的项目来说,这似乎是一项相当多的工作。是否有支持导入 Notebook 文档或一次复制多个单元格的功能?
【问题讨论】:
-
这为我澄清了一切here
标签: jupyter
我有两个不同的 Jupyter 笔记本,用于两个不同的项目。我想将它们合并到同一个笔记本上。
一种方法是将单元格从一个复制到另一个,但对于包含许多单元格的项目来说,这似乎是一项相当多的工作。是否有支持导入 Notebook 文档或一次复制多个单元格的功能?
【问题讨论】:
标签: jupyter
您可以将笔记本与nbmerge合并
用 pip 安装
pip install nbmerge
并将您的文件与
合并nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
【讨论】:
pip install nbmerge
nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
【讨论】:
> merged.ipynb 替换为-o merged.ipynb
您确实可以一次复制多个单元格 - 使用 Shift + J 或 Shift + Down 向下选择下一个单元格,并使用 Shift + K 或 Shift + Up 向上选择下一个单元格。然后,您可以将它们全部复制并粘贴到另一个笔记本中,并通过确保目标笔记本处于命令模式(单元格有蓝色边框)来保留单元格划分。
请参阅 http://jupyter-notebook.readthedocs.io/en/stable/examples/Notebook/Notebook%20Basics.html# 和 https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/。
【讨论】:
安装 nbmerge:
pip install nbmerge
运行以下命令:
!nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged.ipynb
为错过惊呼的人解答
【讨论】:
我过去曾在 .ipynb 文件上使用文本编辑器做过几次此类事情。这是一种相当容易理解的 json 格式。我的用例是将一系列单元格移动到另一个笔记本中,或多或少作为存档活动。
确保你有一个备份策略,以防你通过省略逗号或类似的东西来破坏 json 格式!
您最终会得到一个无效的校验和,当您第一次打开更改的笔记本时会收到警告。第一次保存它们后,会创建一个新的校验和,警告就会消失。
【讨论】:
确保您要合并的所有笔记本都在同一个文件夹/目录中,并将这些代码放在新的 jupyter 单元中(请不要忘记感叹号)
!nbmerge file_1.ipynb file_2.ipynb file_3.ipynb > merged_ouput.ipynb
【讨论】:
您应该查看 GitHub 上跟踪此功能的 the following issue。它很可能通过命令行工具实现。该问题还链接到执行此操作的脚本。
不幸的是,在浏览器窗口之间复制粘贴单元格是一个棘手的问题,因为浏览器的安全性通常会阻止获取足够的数据来执行此操作。在某些情况下可能会使用一些third party extensions。
【讨论】:
将笔记本的部分复制/粘贴到另一个笔记本中是Jupytext 的一个用例。 Jupytext 可以将笔记本的(输入)导出为.py 或.md 文件。执行任一
jupytext --set-formats ipynb,py --sync *.ipynb
或
jupytext --set-formats ipynb,md --sync *.ipynb
然后编辑文本文件,将所需的输入从一个文件移动到另一个文件,并使用
更新相应的.ipynb 文件
jupytext --sync *.ipynb
请注意,此操作仅保留输入未更改的输出。
Jupytext 也可作为 Jupyter 的插件使用。在这种情况下,您不需要使用命令行。您可以使用文件/Jupytext 菜单 (Jupyter Notebook) 或 Jupytext 命令 (Jupyter Lab) 将您的笔记本配对 到所需的文本文件。您只需在浏览器中刷新配对的笔记本,即可获得配对文本文件的最新编辑。
【讨论】: