97 votes

Comment réinitialiser la numérotation des invites de saisie de Jupyter/IPython ?

Je viens d'écrire mon premier tutoriel complet sur Python en utilisant les notebooks d'IPython. Tout s'est bien passé, sauf que j'ai fait beaucoup de tests et de déplacements de blocs. Comment puis-je réinitialiser le In [ ]: la numérotation ? J'ai essayé de quitter et de recharger, mais cela ne semble pas fonctionner.

4voto

Enzo Points 306

J'arrive un peu tard, mais j'ai eu le même problème, et comme mon ordinateur portable avait des cellules avec un temps d'exécution allant jusqu'à 5 minutes, j'ai dû attendre longtemps jusqu'à ce que Redémarrer et exécuter tout terminé.

J'ai donc créé un script Python pour faire cette tâche à ma place :

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)

Mais faites attention à l'ordre d'exécution et aux variables dans vos cellules, car l'application du script ci-dessus sur votre notebook peut générer un résultat différent si vous exécutez à nouveau le notebook. Par exemple, supposons que votre notebook ait les cellules suivantes avec l'ordre d'exécution entre crochets :

In [2]: a = 1

In [1]: a = 2

In [3]: a

Out[3]: 1

Si vous appliquez le script ci-dessus dans votre carnet de notes, il affichera ce qui suit :

In [1]: a = 1

In [2]: a = 2

In [3]: a

Out[3]: 1

Mais si vous exécutez à nouveau le bloc-notes, il affichera ce qui suit :

In [1]: a = 1

In [2]: a = 2

In [3]: a

Out[3]: 2

Cela peut être un peu déroutant pour les personnes qui téléchargent votre carnet de notes via GitHub par exemple, car elles peuvent voir une sortie dans le référentiel, mais lorsqu'elles l'exécutent sur leur machine, la sortie sera différente.

2voto

Javi12 Points 26

Cell > All Output > Clear Effacer tout In []: mais ne les remettent pas à 1 pour la prochaine cellule que vous exécutez.

Kernel > Restart & Clear Output Redémarrer le noyau, effacer la sortie, effacer In []: et les remettre à 1, et effacer la sortie.

2voto

Ahmad Points 1454

Restart & Run All n'est pas une bonne solution, parce que simplement je ne veux pas tout exécuter (et c'est le but d'un notebook d'exécuter les choses cellule par cellule).

Quoi qu'il en soit, j'ai trouvé cette solution plus plausible :

Main Menu > Cell  > All Output > Clear

1voto

Fernando Wittmann Points 335

Pour ceux qui viennent de Google :

%reset

Ceci est utile lorsque vous voulez réinitialiser toutes les variables après un certain point dans le cahier. Il va vous demander si vous êtes sûr de vouloir réinitialiser. Si vous voulez forcer la réinitialisation sans demander, alors utilisez :

%reset -f

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X