如何在jupyter笔记本中逐行执行代码?

2024-04-18 10:35:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在读这本书,试图分析代码。但它只提供*.ipynb文件,这让我很烦恼。

例如

enter image description here

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

每次我想执行一部分代码时,我都需要注释吗?我只想要像Execute the block part这样的东西

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


Tags: 文件the代码in终端executedisplay情况
1条回答
网友
1楼 · 发布于 2024-04-18 10:35:35

ast_node_交互性

在Jupyter笔记本或IPython控制台中,可以使用^{}配置此行为:

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”)。

网友
2楼 · 发布于 2024-04-18 10:35:35

只需添加新单元格,然后将所需的部分剪切并粘贴到新单元格。因此,例如,您可以将导入和%matplotlib inline放在第一个单元格中(因为这些导入和%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)
网友
3楼 · 发布于 2024-04-18 10:35:35

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

相关问题 更多 >