【问题标题】:How can I execute the code line by line in jupyter-notebook?如何在 jupyter-notebook 中逐行执行代码?
【发布时间】:2016-07-12 05:43:41
【问题描述】:

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

例如,

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

每次我想执行部分代码时都必须评论吗?我只想要Execute the block part 之类的东西,比如MATLAB

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

【问题讨论】:

  • 您可以快速将该单元格拆分为多个单元格,只需将光标放在要拆分的位置,然后按 CTRL+SHIFT+-
  • @AGS 谢谢。不知何故,它似​​乎不适用于键盘上的减号。
  • 嗨。你有没有找到办法做到这一点?我真的不喜欢涉及细胞分裂的建议。理想情况下,我希望能够选择一行代码并使用一些快捷键执行它。谢谢
  • @AGS,谢谢。这个快捷方式就是我要找的。​​span>

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


【解决方案1】:

ast_node_interactivity

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

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

示例

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

  • 在笔记本中:

  • 在 IPython 控制台中:

注意事项

  • None 不显示。

  • 还有许多其他有用的提示here(“28 Jupyter Notebook 提示、技巧和快捷方式 - Dataquest”)。

【讨论】:

  • 这个解决方案对我不起作用。当我 Shift Enter 它仍然运行整个单元格。
  • python 3.8,最新版本的 jupyter(刚刚安装)。你想看看哪一部分的碎石照片?
  • 我想我犯了一个错误,它工作得很好!非常感谢!
【解决方案2】:

您可以只添加新单元格,然后将您想要的部分剪切并粘贴到新单元格中。因此,例如,您可以将导入和 %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)

【讨论】:

  • 这个解决方案的困难在于所有这些复制和粘贴都很麻烦(甚至在理解原始代码的行为时可能不得不撤消)。许多编辑器允许执行选定的行,即使它们位于函数内部(但 Jupyter 目前还不允许):这要轻得多。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2021-11-30
      • 2018-08-31
      • 2023-01-10
      • 2020-10-23
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多