我重新打开笔记本时通常必须重新运行(大多数部分)笔记本,以便访问以前定义的变量并继续工作.
但是,有时我想跳过一些对后续细胞没有影响的细胞(例如,它们可能包含完成的分析分支)并且可能需要很长时间才能运行.这些细胞可以分散在整个笔记本中,因此像"Run All Below"这样的东西也无济于事.
有没有办法实现这个目标?
理想情况下,这些单元格可以使用一些特殊标记进行标记,以便它们可以手动"运行",但在"全部运行"时将被跳过.
编辑
%%cache (@ ipak扩展)@Jakob建议在某种程度上解决了这个问题.
实际上,我甚至不需要在重新运行时加载任何变量(对于后续单元格而言可能很大但不必要),只有存储的输出才能作为分析结果.
作为一种解决方案,放在%%cache folder/unique_identifier细胞的开头.代码将只执行一次,重新运行时不会加载任何变量,除非您删除unique_identifier文件.
不幸的是,当重新运行时,所有输出结果都会丢失%%cache.
编辑II(2013年10月14日)
ipython + ipycache的主版本现在也会修改(并重新显示)codecell输出.
对于丰富的显示输出,包括Latex,HTML(pandas DataFrame输出),请记住使用IPython的display()方法,例如, display(Latex(r'$\alpha_1$'))
我能够将整个笔记本导出为HTML,但我想只导出一个单元格及其输出.
有没有办法做到这一点?
我将我的 Jupyter 笔记本排列成:data.ipynb,methods.ipynb和results.ipynb. 如何有选择地从数据和方法笔记本中导入单元格以在结果笔记本中使用?
我知道的nbimporter和ipynb,但这些都不提供的变量选择进口。有一个选项可以导入定义 - 包括大写的变量 - 但这对我不起作用,因为我必须将笔记本中的大多数变量转换为大写。
除了需要很长时间评估的两个或三个单元格之外,我宁愿导入所有内容。理想情况下,我想将某些任务的执行推迟到我访问它们的那一刻(懒惰评估) - 但我知道这可能难以实施。
以下是伪代码概述(每行代表一个单元格):
data.ipynb:
raw_data = load_data()
dataset = munge(raw_data)
describe(dataset) # I want this line to be skipped at import
Run Code Online (Sandbox Code Playgroud)
methods.ipynb:
import data
method = lambda x: x * x
# showcase how the method works on a subset of the dataset
method(data.dataset[:5]) # I want this line to be skipped …Run Code Online (Sandbox Code Playgroud) 我想以编程方式跳过在 jupyter 笔记本的单元格中执行一些代码,而不将所有内容包装在 if-else 块中。
到目前为止,我从这个问题中找到的最接近的解决方案:/sf/answers/3986717381/是这样的:
class StopExecution(Exception):
def _render_traceback_(self):
pass
raise StopExecution
Run Code Online (Sandbox Code Playgroud)
但是,它会停止当前单元格的执行以及所有后续单元格的执行,而我只想提前退出当前单元格。有没有办法继续执行其他单元格?
这是一个代码示例:
if skip_page:
display(HTML('<!--SKIP-PAGE-->'))
stop_cell()
render_some_output()
Run Code Online (Sandbox Code Playgroud)
如果stop_cell()被调用,我不想render_some_output()执行,而是整体执行笔记本执行。
当使用 jupyter 笔记本在 python 中进行原型设计时,我有时必须跳转到位于当前代码单元下方的给定代码单元,跳过之间的单元。
我知道如何在笔记本中添加超链接以从另一个笔记本跳转到任何 Markdown 单元格,但这不适用于代码单元格,并且需要在超链接上单击鼠标。
我想通过在代码单元格中运行命令来跳转到给定单元格。目标代码单元将由用户定义的标签或标签引用(笔记本中的每个代码单元可能已经有自己的单独标签 - 如何识别它?)
我怎么能这样做呢?
我只能设法从代码单元格内创建指向降价单元格的超链接,如下所示:
%%markdown
[Next](#proper-markdown-cell-tag)
Run Code Online (Sandbox Code Playgroud)
但这仍然需要单击鼠标才能跳转到降价单元(而不是代码单元)。当然,这个目标降价单元可以位于目标代码单元的正上方,但这仍然不是我想要的。
注意:考虑了以下SO答案。
这可以完成这项工作,但我无法选择要跳转到哪个特定单元格。
同样,此 SO 是跳过某些单元格而不是跳转到特定单元格。
这很有趣:运行代码单元后,选择下一个代码单元,跳过任何 Markdown 单元。我以为我可以从解决方案中得到我想要的东西,但我做不到。