如何在jupyter-notebook中逐行执行代码?

时间:2016-07-12 05:43:42

标签: python ipython ipython-notebook jupyter jupyter-notebook

我正在阅读这本书Python Machine Learning,并尝试分析代码。但它只提供*.ipynb文件,这让我非常麻烦。

例如,

enter image description here

在这段代码中,我不想运行整个In[9]但想要逐行运行,以便我可以检查变量的每个值并知道每个库函数的作用。

每次我想执行部分代码时,是否必须发表评论?我只想要像Execute the block part

中的MATLAB之类的内容

而且,让我说我评论代码的某些部分并逐行执行。如何在不使用print()display()的情况下检查每个变量的值?如您所知,我不必使用print()来检查终端中python interactive shell中的值。 Jupyter中是否有类似的方式?

4 个答案:

答案 0 :(得分:11)

ast_node_interactivity

在Jupyter Notebook或IPython控制台中,您可以使用ast_node_interactivity配置此行为:

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

实施例

使用此配置,每条线都会打印得很漂亮,即使它们位于同一个单元格中。

  • 在笔记本中:

Jupyter notebook multiple lines

  • 在IPython控制台中:

IPython console multiple lines

注释

  • None未显示。

  • 还有许多其他有用的提示here(" 28 Jupyter笔记本提示,技巧和快捷方式 - Dataquest")。

答案 1 :(得分:3)

您可以添加新单元格,然后将所需部件剪切并粘贴到新单元格中。因此,例如,您可以将导入和%matplotlib inline放在第一个单元格中(因为那些只在首次打开笔记本时才需要运行),第二个中的y代,{ {1}}第三代产生,第四代产生密谋。然后你可以一个接一个地运行每个单元格。这只是一个例子,您可以根据需要将其拆分(尽管我建议在最开始时将导入放在一起)。

对于打印,如果单元格中的最后一行未分配给变量,则会自动打印。因此,举例来说,以下是一个单元格:

X

然后将在单元格后显示y = df.iloc[0:100, 4].values y = np.where(y == 'spam', -1, 1) y 的内容。同样,如果您有一个包含这些内容的单元格:

y

然后,y = df.iloc[0:100, 4].values y = np.where(y == 'spam', -1, 1) y.sum() 操作的结果将显示在单元格之后。另一方面,如果执行以下单元格,则不打印任何内容:

y.sum()

也没有为此印刷任何东西:

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

答案 2 :(得分:1)

在PyCharm Jupyter笔记本电脑中,您只需右键单击并拆分单元格,完成后右键单击合并。

答案 3 :(得分:0)

我认为您可以在行之间打印变量。这是简单的方法