我正在读这本书,
Python Machine Learning
,并尝试分析代码。但它只提供*.ipynb
文件,这让我很麻烦。
例如,
在这段代码中,我不想运行整个
In[9]
,而是想逐行运行,以便我可以检查变量的每个值并了解每个库函数的作用。
每次执行部分代码都需要注释吗?我只想要像
Execute the block part
中那样的
MATLAB
之类的东西
而且,假设我注释了代码的某些部分并逐行执行。如何在不使用
print()
或 display()
的情况下检查每个变量的值?如您所知,我不必使用 print()
来检查终端中 python interactive shell
中的值。 Jupyter
有类似的方法吗?
在 Jupyter Notebook 或 IPython 控制台中,您可以使用
ast_node_interactivity
配置此行为:
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
使用此配置,每一行都会打印得很漂亮,即使它们位于同一个单元格中。
None
不显示。还有许多其他有用的提示这里(“28 个 Jupyter Notebook 提示、技巧和快捷方式 - 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 中,您只需右键单击并拆分单元格,完成后右键单击合并。
我认为你可以打印行之间的变量。这是最简单的方法
上面有正确的答案,但它实际上不是官方的“答案”。它在第一次发布后的第一条评论中,内容如下:
You can quickly split that cell
into multiple cells by putting your
cursor at the desired location to split at,
and press CTRL+SHIFT+- – AGS
Jul 14, 2016 at 0:48
这是常规使用的最佳正确答案。在编程时,您可以通过在断点处“拆分单元格”来插入中断。 “拆分单元格”选项位于“编辑”选项卡(菜单)下。