如何在 Jupyter 中显示完整输出,而不仅仅是最后一个结果?

Posted

技术标签:

【中文标题】如何在 Jupyter 中显示完整输出,而不仅仅是最后一个结果?【英文标题】:How to display full output in Jupyter, not only last result? 【发布时间】:2016-08-15 15:58:10 【问题描述】:

我希望 Jupyter 打印所有交互式输出而不使用打印,而不仅仅是最后一个结果。怎么做?

例子:

a=3
a
a+1

我想显示

3 4

【问题讨论】:

它不经常使用,但实际上有一个配置选项应该这样做 - 在IPython kernel config file 中将InteractiveShell.ast_node_interactivity 设置为'all' 谢谢你,Thomas,这就是我要找的 :) 它存在! ! ! 【参考方案1】:

感谢 Thomas,这是我一直在寻找的解决方案:

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

【讨论】:

这是一个很棒的提示。 - 仅恢复到最后一行输出的标志值是多少? 默认值为:'last_expr'。您可以在这里找到很多其他选项:ipython.readthedocs.org/en/stable/config/options/terminal.html 作为参考,选项有“all”、“none”、“last”和“last_expr”。 'last' 和 'last_expr' 之间的区别:如果您的单元格以包含表达式的循环结尾,则 'last' 将在循环的每次迭代中向您显示该表达式的结果。 'last_expr'(默认值)不会显示:它只会在单元格末尾显示裸表达式的结果。 天哪...这个功能简直是杀手锏。 新的(ish)last_expr_or_assign 非常适合做演示!不再需要多次重新输入同一个项目来打印它。【参考方案2】:

https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/

1) 将此代码放在 Jupyter 单元中:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

2) 在 Windows 中,以下步骤使更改永久生效。应该适用于其他操作系统。您可能需要更改路径。

C:\Users\your_profile\\.ipython\profile_default

使用以下代码在 profile_defaults 中创建一个 ipython_config.py 文件:

c = get_config()

c.InteractiveShell.ast_node_interactivity = "all"

【讨论】:

【参考方案3】:

基于笔记本

正如其他人所回答的那样,将以下代码放入 Jupyter Lab 或 Jupyter Notebook 单元格中会起作用:

from IPython.core.interactiveshell import InteractiveShell

InteractiveShell.ast_node_interactivity = "all"

永久更改

但是,如果您想将此永久化并使用 Jupyter Lab,则需要创建一个 IPython 笔记本配置文件。运行以下命令来执行此操作(如果您使用 Jupyter Notebook,请勿运行 - 更多详细信息如下):

ipython profile create

如果您使用的是 Jupyter Notebook,则该文件应该已经创建,无需再次运行。事实上,运行此命令可能会覆盖您当前的偏好。

创建此文件后,对于 Jupyter Lab 和 Notebook 用户,将以下代码添加到文件 C:\Users\USERNAME\.ipython\profile_default\ipython_config.py

c.InteractiveShell.ast_node_interactivity = "all"

我发现在较新版本的 Jupyter 中不需要 c = get_config(),但如果这对您不起作用,请将 c = get_config() 添加到文件的开头。

有关"all" 以外的更多标志选项,请访问this 链接: https://ipython.readthedocs.io/en/stable/config/options/terminal.html#configtrait-InteractiveShell.ast_node_interactivity

【讨论】:

有没有办法在每个单元格中做到这一点?假设我只想在几个单元格上查看 Pandas.Series 的完整结果,有可能吗? @RicardoSanchez 也许只使用display() 函数?首先导入它from IPython.display import display 然后只做display(df)

以上是关于如何在 Jupyter 中显示完整输出,而不仅仅是最后一个结果?的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm - 我如何调试(如在 Jupyter Notebook 中)而不必每次修改代码时都重新运行完整的脚本?

如何在运行 IPython 的 Jupyter 中抑制输出?

如何在 PHP 中获取完整的 URL,而不仅仅是其中的一部分? [复制]

在 jupyter notebook 中使用 joblib 时不显示打印输出

如何在 VSCode、TypeScript 中查看悬停时的完整类型定义?

如何使用 google colab 在 jupyter notebook 中显示 GIF?