我刚刚使用IPython笔记本写了我的第一个广泛的Python教程。一切进行得很好,除了我做了很多测试和移动模块。如何重置In [ ]:
编号?我尝试退出并重新加载,但这似乎不起作用。
Answers:
我认为,达到所需状态的唯一方法是:-“内核>重新启动”(重新启动内核),然后“单元>全部运行”(运行脚本)。
您可以重置内核(快捷方式:),C-m .
然后重新运行整个笔记本。
退出并重新加载不起作用,因为未对代码进行重新评估。
Cell > All Output > Clear
只是清除输出,它不会重置编号...Kernel > Restart
就可以了。
每个.ipynb
文件都可以在编辑器中打开。那里写的所有内容都是纯文本(JSON)。对于每个具有的"cell_type": "code"
键值对,每个单元格都有一个"execution_count": <number>
。您可能已经猜到了,这就是提示编号。因此,如果笔记本包含需要花费时间才能执行的代码(就我而言),则此方法将节省时间。
现在,您可以手动更改每个代码,也可以execution_count
编写一个简单的脚本来正确编号。要检查结果,只需在浏览器中刷新笔记本而不停止内核即可。而且,一切都将根据您的需求,即使所有变量/加载的数据也将保留在环境中。
如果您要删除数字本身,以便每个单元格显示 In [ ]
(而不是像In [247]
以前的内核所遗留下来的那样),请使用“单元格”>“所有输出”>“清除”(在Jupyter Notebook中) 5.4.0)或“编辑”>“清除所有输出”(在Jupyter Lab 0.32.1中)。
即使您正在运行笔记本,这也会删除所有数字。不会将编号重设为1;例如,如果您执行的最后一个单元格是18,则下一个将是19。
如果您使用此命令是因为您希望弄清楚在此内核运行期间执行了哪些单元以及尚未执行哪些单元,请使用“单元”>“所有输出”>“清除”(或“编辑” “>”清除所有输出“),然后再启动(或重新启动)内核。重新启动内核或打开保存或复制的笔记本时,这很有用。
这也会从笔记本电脑上删除所有输出。
感谢user2651084在先前的评论中。
我为时已晚,但是我遇到了同样的问题,并且由于我的笔记本具有执行时间最长为5分钟的单元,因此我不得不等待很长时间才能完成Restart&Run All。
因此,我制作了一个Python脚本来为我完成此任务:
import json
file = '/your/notebook/path/Notebook.ipynb'
# Since every notebook is actually a JSON (JavaScript
# Object Notation), then its contents can be represented
# in a dictionary (or a list of dictionaries)
with open(file, encoding='utf-8') as f:
nb = json.load(f)
count = 1
for cell in nb['cells']:
# Markdown cells doesn't have execution count,
# so apply this only to cells that have one
if 'execution_count' in cell:
cell['execution_count'] = count
count += 1
# Not all code cells have output, such as functions
# that return None or simple declarations, so apply
# this only to cells that have some output
try:
for output in cell['outputs']:
if 'execution_count' in output:
output['execution_count'] = cell['execution_count']
except KeyError:
continue
with open(file, 'w+') as f:
json.dump(nb, f, indent=2, ensure_ascii=False)
但是要小心执行顺序和单元格中的变量,因为如果再次运行笔记本,则在笔记本上应用上述脚本可能会生成不同的输出。例如,假设您的笔记本有以下单元格,其执行顺序在方括号中:
In [2]: a = 1
In [1]: a = 2
In [3]: a
Out[3]: 1
如果将上述脚本应用到笔记本中,它将显示以下内容:
In [1]: a = 1
In [2]: a = 2
In [3]: a
Out[3]: 1
但是,如果再次运行笔记本,它将显示以下内容:
In [1]: a = 1
In [2]: a = 2
In [3]: a
Out[3]: 2
例如,对于那些通过GitHub下载笔记本的人来说,这可能会有些混乱,因为他们可以在存储库中看到输出,但是当他们在自己的计算机上运行时,输出将有所不同。