繁体   English   中英

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

[英]How can I execute the code line by line in jupyter-notebook?

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

例如,

在此处输入图片说明

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

每次我想执行部分代码时都必须评论吗? 我只想要像在MATLAB Execute the block part这样的东西

而且,假设我注释了代码的某些部分并逐行执行。 如何在不使用print()display()情况下检查每个变量的值? 如您所知,我不必使用print()在终端的python interactive shell中检查值。 Jupyter有类似的方法吗?

ast_node_interactivity

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

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

例子

有了这个配置,每一行都会被打印出来,即使它们在同一个单元格中。

  • 在笔记本中:

Jupyter 笔记本多行

  • 在 IPython 控制台中:

IPython 控制台多行

笔记

  • None显示。

  • 还有其他许多有用的技巧在这里(“28个Jupyter笔记本技巧,窍门和捷径- Dataquest公司”)。

您可以只添加新单元格,然后将您想要的部分剪切并粘贴到新单元格中。 因此,例如,您可以将导入和%matplotlib inline放在第一个单元格中(因为它们只需要在第一次打开笔记本时才需要运行),第二个y代,第三个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)

也没有为此打印任何内容:

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

在 PyCharm Jupyter Notebooks 中,您只需右键单击并拆分单元格,完成后右键单击合并。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM