如何重置Jupyter / IPython输入提示编号?


74

我刚刚使用IPython笔记本写了我的第一个广泛的Python教程。一切进行得很好,除了我做了很多测试和移动模块。如何重置In [ ]:编号?我尝试退出并重新加载,但这似乎不起作用。

Answers:


61

我认为,达到所需状态的唯一方法是:-“内核>重新启动”(重新启动内核),然后“单元>全部运行”(运行脚本)。


1
正是我想要的。谢谢!
Duff 2015年

4
内核“重新启动并全部运行”下现在有一个选项,只需单击一下即可执行相同的操作,如Vlad Bezden在下面提到的。
Michael Szczepaniak

清除左侧所有这些数字的另一个有效选项位于顶部栏中:>“内核”>“重新启动并清除输出”。然后单击“重新启动并清除所有输出”进行确认,您将拥有相同的笔记本,但没有任何输入数字。
NuValue

20

您可以重置内核(快捷方式:),C-m .然后重新运行整个笔记本。

退出并重新加载不起作用,因为未对代码进行重新评估。


15
我只是想通了。在菜单单元格>所有输出>清除中
user2651084 2013年

9
Cell > All Output > Clear只是清除输出,它不会重置编号...Kernel > Restart就可以了。
mimoralea

16

每个.ipynb文件都可以在编辑器中打开。那里写的所有内容都是纯文本(JSON)。对于每个具有的"cell_type": "code"键值对,每个单元格都有一个"execution_count": <number>。您可能已经猜到了,这就是提示编号。因此,如果笔记本包含需要花费时间才能执行的代码(就我而言),则此方法将节省时间。

现在,您可以手动更改每个代码,也可以execution_count编写一个简单的脚本来正确编号。要检查结果,只需在浏览器中刷新笔记本而不停止内核即可。而且,一切都将根据您的需求,即使所有变量/加载的数据也将保留在环境中。


5
+1,对于那些来到这里问我们如何能够在重新运行整个笔记本的情况下重置执行编号的人。
朱利安·德拉戈

@JulianDrago是的,有时候我的笔记本需要花费数小时甚至数天的时间……通常,重启内核当然不是仅用于重置执行编号的选项。
ijoseph '19

14
'Kernel' -> 'Restart & Run All'

只要确保您保存了笔记本即可。您也可以绑定/分配键盘键来运行此命令。

'Help' -> 'Edit Keyboard Shortcuts'

1
谢谢!我在“重新启动内核并运行所有单元”中添加了“ Ctrl-Shift-R”。
阿德乔克斯

3

如果您要删除数字本身,以便每个单元格显示 In [ ](而不是像In [247]以前的内核所遗留下来的那样),请使用“单元格”>“所有输出”>“清除”(在Jupyter Notebook中) 5.4.0)或“编辑”>“清除所有输出”(在Jupyter Lab 0.32.1中)。

即使您正在运行笔记本,这也会删除所有数字。不会将编号重设为1;例如,如果您执行的最后一个单元格是18,则下一个将是19。

如果您使用此命令是因为您希望弄清楚在此内核运行期间执行了哪些单元以及尚未执行哪些单元,请使用“单元”>“所有输出”>“清除”(或“编辑” “>”清除所有输出“),然后再启动(或重新启动)内核。重新启动内核或打开保存或复制的笔记本时,这很有用。

这也会从笔记本电脑上删除所有输出。

感谢user2651084在先前的评论中。


2

Cell > All Output > Clear清除所有In []:数字,但不要在运行下一个单元格时将其重置为1。

Kernel > Restart & Clear Output重新启动内核,清除输出,清除In []:数字并将其重置为1,然后清除输出。


0

我为时已晚,但是我遇到了同样的问题,并且由于我的笔记本具有执行时间最长为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下载笔记本的人来说,这可能会有些混乱,因为他们可以在存储库中看到输出,但是当他们在自己的计算机上运行时,输出将有所不同。


0

Restart & Run All 并不是一个好的解决方案,因为我根本不想全部运行(这是笔记本电脑逐个运行的目的。)

无论如何,我发现此解决方案更合理:

Main Menu > Cell  > All Output > Clear

-1

对于来自Google的用户:

%reset

当您要在笔记本计算机中的某个点之后重置所有变量时,此功能很有用。它将询问您是否确定要重置。如果要不询问就强制重置,请使用:

%reset -f
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.