在jupyter笔记本中崩溃细胞

alo*_*oha 111 python ipython ipython-notebook jupyter

我正在使用ipython Jupyter笔记本.假设我定义了一个在屏幕上占用大量空间的函数.有没有办法折叠细胞?

我希望函数保持执行和可调用,但我想隐藏/折叠单元格以便更好地可视化笔记本.我怎样才能做到这一点?

Ene*_*gya 72

jupyter contrib nbextensionsPython包包含一个代码折叠扩展,可以在笔记本内启用.请点击链接(Github)获取文档.

要使用命令行安装:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
Run Code Online (Sandbox Code Playgroud)

为了使管理生活更轻松,我还推荐了这个jupyter nbextensions configurator包.这为您的Notebook界面提供了一个额外的选项卡,您可以从中轻松(de)激活所有已安装的扩展.

安装:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
Run Code Online (Sandbox Code Playgroud)

  • 很酷的东西,虽然我希望"Codefolding"nbextension可以折叠整个单元格,而不仅仅是代码块. (9认同)
  • 最简单的安装路径是[通过conda本身](http://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html#conda):`conda install -c conda-forge jupyter_contrib_nbextensions`. (6认同)
  • 对于使用新型JupyterLab的任何人来说,这只是一个简短的说明。根据提到的GitHub网站,这些扩展可以在JupyterLab中使用。我自己对此感到纳闷,所以我想让别人知道。引用GitHub存储库:`由于Jupyter Notebook和JupyterLab之间存在重大差异,因此该存储库中的扩展在JupyterLab中不起作用。 (3认同)
  • 如果有人遇到conda的安装问题,请尝试:`pip install jupyter_contrib_nbextensions`然后`jupyter contrib nbextensions install --sys-prefix --skip-running-check`.我希望jupyter默认拥有这个包. (2认同)
  • 如果在单元格的顶部放置#comment,则可以折叠整个单元格。然后,Jupyter提供一个下拉箭头,该箭头将折叠整个单元格。 (2认同)

Pan*_*Yan 23

您可以创建一个单元格并将以下代码放入其中:

%%html
<style>
div.input {
    display:none;
}
</style>
Run Code Online (Sandbox Code Playgroud)

运行此单元格将隐藏所有输入单元格.要显示它们,您可以使用菜单清除所有输出.

否则你可以尝试下面的笔记本扩展:

https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/Home_3x


int*_*sco 18

JupyterLab支持细胞崩溃.单击左侧的蓝色单元格栏将折叠单元格. 在此输入图像描述

  • 但并不坚持出口 (8认同)
  • 代码和输出可以按照此答案中的描述折叠。此外,信息被保留。它被写入单元的元数据中。设置了“source_hidden”和“outputs_hidden”。https://nbformat.readthedocs.io/en/latest/format_description.html#cell-metadata (2认同)

小智 15

我遇到了类似的问题,@ Energya指出的"nbextensions"工作得非常好,毫不费力.对于笔记本扩展配置程序,安装说明是直接的(我在Windows上尝试使用anaconda).

也就是说,我想补充一点,以下扩展应该是有意义的.

  • 隐藏输入| 此扩展允许在笔记本中隐藏单个代码单元.这可以通过单击工具栏按钮来实现: 隐藏输入

  • 可折叠标题| 允许笔记本具有可折叠部分,由标题分隔 可折叠标题

  • 代码折叠| 这已被提及,但我添加它是为了完整性 语法折叠


Ben*_*sAI 11

这个问题有很多答案,我觉得所有这些都不令人满意(有些比其他更多),在许多扩展中 - 代码折叠,按标题折叠等。没有一个能以简单有效的方式做我想要的。我真的很惊讶还没有实施解决方案(就像 Jupyter 实验室那样)。

事实上,我很不满意,以至于我开发了一个非常简单的笔记本扩展,它可以扩展/折叠笔记本单元中的代码,同时保持它的可执行性。

GitHub 存储库:https : //github.com/BenedictWilkinsAI/cellfolding

下面是扩展功能的一个小演示:

只需双击代码单元的左侧即可将其折叠为一行:

再次双击将展开单元格。

可以使用 pip 轻松安装扩展:

pip install nbextension-cellfolding
jupyter nbextension install --py cellfolding --user
jupyter nbextension enable --py cellfolding --user 
Run Code Online (Sandbox Code Playgroud)

并且还与nbextension 配置器兼容。我希望人们会发现这很有用!


小智 9

在〜/ .jupyter/custom /中创建custom.js文件,内容如下:

$("<style type='text/css'> .cell.code_cell.collapse { max-height:30px; overflow:hidden;} </style>").appendTo("head");
$('.prompt.input_prompt').on('click', function(event) {
    console.log("CLICKED", arguments)   
    var c = $(event.target.closest('.cell.code_cell'))
    if(c.hasClass('collapse')) {
        c.removeClass('collapse');
    } else {
        c.addClass('collapse');
    }
});
Run Code Online (Sandbox Code Playgroud)

保存后,重新启动服务器并刷新笔记本.您可以通过单击输入标签(In [])来折叠任何单元格.

  • 这对我来说不起作用,因为当执行自定义js时,未加载要更改的div.但是,这可以修复包装setTimeout中的所有内容(function(){...},3000); (3认同)
  • 在将第4行更改为:`var c = $(event.target).closest('.cell.code_cell')`之后,这对我有用,并遵循Steohan建议将所有内容包装在setTimeout中. (2认同)

Lin*_*nas 8

hide_code扩展允许您隐藏单个单元格和/或它们旁边的提示.安装为

pip3 install hide_code
Run Code Online (Sandbox Code Playgroud)

有关此扩展的更多信息,请访问https://github.com/kirbs-/hide_code/.


use*_*780 7

首先,按照Energya的指示:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user
Run Code Online (Sandbox Code Playgroud)

第二个关键:打开jupiter笔记本后,单击Nbextension选项卡.现在从Nbextension提供的搜索工具(而不是通过网络浏览器)搜索"colla",然后你会发现一个叫做"可折叠标题"的东西

这就是你想要的!


小智 5

正如其他人提到的,您可以通过 nbextensions 来做到这一点。我想简要解释一下我所做的事情,这既快速又简单:

要启用可折叠标题:在终端中,首先输入以下内容来启用/安装 Jupyter Notebook Extensions:

pip install jupyter_contrib_nbextensions
Run Code Online (Sandbox Code Playgroud)

然后,输入:

jupyter contrib nbextension install
Run Code Online (Sandbox Code Playgroud)

重新打开 Jupyter Notebook。转到“编辑”选项卡,然后选择“nbextensions config”。取消直接在标题“Configurable nbextensions”下方的复选框,然后选择“collapsible headers”。