Comment puis-je exécuter le code ligne par ligne dans jupyter-portable?

je suis en train de lire le livre, Python Machine Learning, et j'ai essayé d'analyser le code. Mais elle ne propose que *.ipynb et cela me rend très gênant.

Par exemple,

enter image description here

Dans ce code, je ne veux pas courir ensemble In[9] mais souhaitez exécuter ligne par ligne afin que je puisse vérifier chaque valeur de la variable et de savoir ce que chaque fonction de bibliothèque n'.

dois-je commenter chaque fois que je veux exécuter une partie des codes? Je je veux juste quelque chose comme Execute the block part comme dans MATLAB

et aussi, disons que je commente une partie du code et exécute ligne par ligne. Comment puis-je vérifier la valeur de chaque variable sans utiliser print() ou <!--6? Comme vous le savez, je n'ai pas à utiliser print() à vérifier la valeur dans python interactive shell en terminal. Est-il une manière similaire dans les Jupyter?

17
demandé sur user3595632 2016-07-12 08:43:41

2 réponses

ast_node_interactivité

dans le bloc-notes Jupyter ou dans la console IPython, vous pouvez configurer ce comportement avec ast_node_interactivity:

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

Exemples

Avec cette configuration, chaque ligne sera assez imprimés, même s'ils sont dans la même cellule.

  • Notebook:

Jupyter notebook multiple lines

  • Dans IPython console:

IPython console multiple lines

Notes

  • None n'est pas affiché.

  • Il y a beaucoup d'autres conseils utiles ici ("28 Jupyter Cahier des conseils, des astuces et de raccourcis - Dataquest").

5
répondu Eric Duminil 2018-01-09 07:58:45

Vous pouvez simplement ajouter de nouvelles cellules, puis couper et coller les parties que vous voulez de nouvelles cellules. Ainsi, par exemple, vous pouvez mettre les importations et les %matplotlib inline dans la première cellule (puisque celles-ci n'ont besoin d'être exécutées que lorsque le carnet est ouvert pour la première fois), le y génération dans le second, le X génération dans la troisième, et le complot dans la quatrième. Ensuite, vous pouvez juste courir chaque cellule une après l'autre. C'est juste un exemple, vous pouvez le diviser comme vous voulez (bien que je ne recommande pas de mettre les importations ensemble au tout début).

comme pour l'impression, si la dernière ligne d'une cellule n'est pas assignée à une variable, elle est automatiquement imprimée. Ainsi, par exemple, disons que la case suivante est une cellule:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)
y

puis le contenu de y sera affiché après la cellule. De même, si vous avez une cellule avec ce contenu:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)
y.sum()

puis le résultat du y.sum() l'opération sera affichée après la cellule. D'autre part, si les conditions suivantes la cellule est exécuté, alors rien n'est imprimé:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)

Ni tout ce qui est imprimé pour celui-ci:

z = {}
y = df.iloc[0:100, 4].values
z['spam'] = np.where(y == 'spam', -1, 1)
2
répondu TheBlackCat 2016-07-12 13:44:39