programing

주피터 노트북의 셀을 접다

kingscode 2022. 11. 8. 21:29
반응형

주피터 노트북의 셀을 접다

ipython Jupyter 노트북을 사용하고 있습니다.예를 들어 화면의 공간을 많이 차지하는 기능을 정의했다고 합시다.세포를 붕괴시킬 방법이 있나요?

기능을 실행 및 호출 가능한 상태로 유지하고 싶지만 노트북을 더 잘 볼 수 있도록 셀을 숨기거나 축소하고 싶습니다.이거 어떻게 해?

갱신:

" " "jupyter-lab로 셀 폴딩을 입니다. @을 참조하십시오.

업데이트 2

★★jupyter-lab는 내선번호도 지원하게 되었습니다.내선번호를 사용하여 내장된 셀링 기능을 확장할 수 있습니다.

원답:

Python 패키지에는 노트북 내에서 활성화할 수 있는 코드 폴딩 확장 기능이 포함되어 있습니다.링크(Github)에 따라 문서를 참조해 주세요.

명령줄을 사용하여 설치하려면:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user

관리를 쉽게 하기 위해 패키지도 추천합니다.이렇게 하면 노트북 인터페이스에 설치된 모든 확장 기능을 쉽게 활성화(비활성화)할 수 있는 추가 탭이 제공됩니다.

설치:

pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

JupyterLab은 셀 접기를 지원합니다.왼쪽의 파란색 셀 바를 클릭하면 셀이 접힙니다.여기에 이미지 설명 입력

셀을 생성하여 다음 코드를 입력할 수 있습니다.

%%html
<style>
div.input {
    display:none;
}
</style>

이 셀을 실행하면 모든 입력 셀이 숨겨집니다.메뉴를 사용하여 모든 출력을 지울 수 있습니다.

그렇지 않으면 다음과 같은 노트북 확장 기능을 사용해 보십시오.

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

저도 같은 문제가 있었습니다.@ Energya가 지적한 'nbextensions'는 매우 쉽게 동작했습니다.노트북확장 기능과 컨피규레이터의 설치 순서는 간단합니다(Windows에서 아나콘다를 사용해 보았습니다).

덧붙여서, 이하의 확장이 중요합니다.

  • 입력 숨기기 | 이 확장을 통해 노트북의 개별 코드 셀을 숨길 수 있습니다.툴바 버튼을 클릭하면 다음과 같이 할 수 있습니다.

  • Collapsible Headings | 노트북은 제목으로 구분된 접을 수 있는 섹션을 가질 수 있습니다.

  • 코드폴딩 | 이것은 이미 언급되어 있습니다만, 완전성을 위해 추가하겠습니다.

이 질문에는 코드 폴딩, 제목에 의한 폴딩 등 많은 확장 기능 중 만족스럽지 못한 답변이 있습니다(다른 확장 기능보다 더 많은 답변).아무도 내가 원하는 것을 단순하고 효과적인 방법으로 하지 않는다.(Jupyter Lab과 마찬가지로) 솔루션이 구현되지 않은 것에 대해 정말 놀랐습니다.

실제로 노트북 셀의 코드를 확장/축소하면서 실행 가능한 상태로 유지할 수 있는 매우 간단한 노트북 확장 기능을 개발한 것이 불만족스러웠습니다.

GitHub 저장소: https://github.com/BenedictWilkinsAI/cellfolding

다음은 확장 기능에 대한 작은 데모입니다.

코드 셀의 왼쪽을 두 번 클릭하면 한 줄로 축소됩니다.

다시 두 번 클릭하면 셀이 확장됩니다.

확장 기능은 다음과 같이 pip으로 쉽게 설치할 수 있습니다.

pip install nbextension-cellfolding
jupyter nbextension install --py cellfolding --user
jupyter nbextension enable --py cellfolding --user 

또한 nbextension 컨피규레이터와도 호환됩니다.나는 사람들이 이것을 유용하게 여기기를 바란다!

~/.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');
    }
});

저장 후 서버를 재시작하고 노트북을 새로 고칩니다.입력 라벨(In[])을 클릭하면 셀을 접을 수 있습니다.

hide_code 확장자를 사용하면 개별 셀 및 셀 옆에 있는 프롬프트를 숨길 수 있습니다.로서 인스톨

pip3 install hide_code

이 확장에 대한 자세한 내용은 https://github.com/kirbs-/hide_code/를 참조하십시오.

먼저 Energya의 지시에 따릅니다.

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
pip install jupyter_nbextensions_configurator
jupyter nbextensions_configurator enable --user

두 번째는 주피터 노트북을 연 후 Nbextension 탭을 클릭합니다.웹 브라우저가 아닌 Nbextension에서 제공하는 검색 도구에서 "colla"를 검색하면 "Collapsible Headings"라는 항목이 나타납니다.

이게 네가 원하는 거야!

다른 사용자가 언급했듯이 nbextensions를 통해 이를 수행할 수 있습니다.저는 제가 한 일에 대한 간단한 설명을 빠르고 쉽게 하고 싶었습니다.

공동 머리글을 사용하려면단말기에서 먼저 다음을 입력하여 Jupyter 노트북 확장 기능을 활성화/설치합니다.

pip install jupyter_contrib_nbextensions

다음으로 다음과 같이 입력합니다.

jupyter contrib nbextension install

Jupyter 노트북을 다시 엽니다."편집" 탭으로 이동하고 "nbextensions config"를 선택합니다."Configurable nbextensions" 바로 아래의 확인란을 선택 취소한 다음 "collapsible headings"를 선택합니다.

판옌 제안의 개선된 버전도 있습니다.코드 셀을 다시 표시하는 버튼을 추가합니다.

%%html
<style id=hide>div.input{display:none;}</style>
<button type="button" 
onclick="var myStyle = document.getElementById('hide').sheet;myStyle.insertRule('div.input{display:inherit !important;}', 0);">
Show inputs</button>

또는 python:

# Run me to hide code cells

from IPython.core.display import display, HTML
display(HTML(r"""<style id=hide>div.input{display:none;}</style><button type="button"onclick="var myStyle = document.getElementById('hide').sheet;myStyle.insertRule('div.input{display:inherit !important;}', 0);">Show inputs</button>"""))

확장 기능을 활성화하는 것 이외에는 많은 작업을 수행할 필요가 없습니다.

http://localhost:8888/nbextensions?nbextension=collapsible_headings
http://localhost:8888/nbextensions?nbextension=codefolding/main

여기에 이미지 설명 입력

대부분의 경우 여기서 모든 내선번호를 찾을 수 있습니다.

http://localhost:8888/nbextensions

여기에 이미지 설명 입력

원하는 결과를 얻기 위해 사용하는 것은 다음과 같습니다.

  1. '보다'에 합니다.toggle_cell.py과 .
from IPython.core.display import display, HTML
toggle_code_str = '''
<form action="javascript:code_toggle()"><input type="submit" id="toggleButton" value="Show Sloution"></form>
'''

toggle_code_prepare_str = '''
    <script>
    function code_toggle() {
        if ($('div.cell.code_cell.rendered.selected div.input').css('display')!='none'){
            $('div.cell.code_cell.rendered.selected div.input').hide();
        } else {
            $('div.cell.code_cell.rendered.selected div.input').show();
        }
    }
    </script>

'''

display(HTML(toggle_code_prepare_str + toggle_code_str))

def hide_sloution():
    display(HTML(toggle_code_str))
  1. 노트북의 첫 번째 셀에 다음을 추가합니다.
from toggle_cell import toggle_code as hide_sloution
  1. 호출할 수 .hide_sloution()

저도 같은 문제가 있었습니다. 이 확장자가 유용하다는 것을 알았습니다.

pip install aquirdturtle_collapsible_headings

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/33159518/collapse-cell-in-jupyter-notebook

반응형