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

时间:2013-09-15 21:29:50

标签: ipython jupyter-notebook ipython-notebook jupyter

我刚刚使用IPython笔记本编写了我的第一篇广泛的Python教程。一切顺利,除了我做了很多测试和移动块。如何重置In [ ]:编号?我试过戒烟和重装,但这似乎不起作用。

9 个答案:

答案 0 :(得分:49)

我认为,达到你想要的唯一方法是: - '内核>重新启动' (重启内核)然后' Cell>全部运行' (运行脚本)。

答案 1 :(得分:21)

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

退出和重新加载不起作用,因为不重新评估代码。

答案 2 :(得分:10)

'Kernel' -> 'Restart & Run All'

确保您已保存笔记本。您还可以绑定/分配键盘键以运行此命令。

'Help' -> 'Edit Keyboard Shortcuts'

答案 3 :(得分:5)

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

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

答案 4 :(得分:1)

如果你想要的是删除数字本身,那么每个单元格显示In [ ](而不是像In [247]这样的内容的某些先前版本的剩余部分),使用&#34 ;细胞&#34; &GT; &#34;所有输出&#34; &GT; &#34;清除&#34; (在Jupyter Notebook 5.4.0中)或&#34;编辑&#34; &GT; &#34;清除所有输出&#34; (在Jupyter Lab 0.32.1中)。

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

如果你正在使用它,因为你想清楚你在内核运行期间执行了哪些单元格以及你还没有执行过哪些单元格,请使用&#34; Cell&#34 ; &GT; &#34;所有输出&#34; &GT; &#34;清除&#34; (或&#34;编辑&#34;&gt;&#34;清除所有输出&#34;)在您启动(或重新启动)内核后立即执行。这在重新启动内核或打开已保存或复制的笔记本时非常有用。

这也将删除笔记本中的所有输出。

感谢之前评论中的user2651084。

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

我为时已晚,但是我遇到了同样的问题,并且由于我的笔记本中有执行时间长达5分钟的单元,因此我不得不等待很长时间,直到重新启动并全部运行 >完成。

所以我制作了一个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下载笔记本的人们可能会有些困惑,因为他们可以在存储库中看到输出,但是当他们在自己的计算机上运行时,输出将有所不同。

答案 7 :(得分:0)

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

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

Main Menu > Cell  > All Output > Clear

答案 8 :(得分:-1)

对于来自Google的用户:

%reset

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

%reset -f