Table of Contents (2)¶
The toc2 extension enables to collect all running headers and display them in a floating window, as a sidebar or with a navigation menu. The extension is also draggable, resizable, collapsable, dockable and features automatic numerotation with unique links ids, and an optional toc cell. Sections of currently selected/edited or running cells are highlighted in the toc. Some minor diplay tweaks are also available (moving header tile/menus, widening cells); Finally, the toc can preserved when exporting to html.
First demo: Floating toc window and SideBar, toc auto-update, section numbering¶
Second demo: Save as html with toc / Navigation menu¶
Third demo: Notebook scrolling and Collapsing sections¶
The table of contents is automatically updated when modifications occur in the notebook. The toc window can be moved and resized. It can be docked as a sidebar or dragged from the sidebar into a floating window. The table of contents can be collapsed or the window can be completely hidden. The navigation menu can be enabled/disabled via the nbextensions configuration utility. It can also be resized. The position, dimensions, and states (that is ‘collapsed’ and ‘hidden’ states) are remembered (actually stored in the notebook’s metadata) and restored on the next session.
There is a configurable option to skip h1 headers from the ToC, to allow their use as a notebook title. However, this cause issues in latex exports, where h1 are converted to sections. Alternatively, headers of any level can be omitted from being the toc by adding an html tag with the css class tocSkip at the end of the header line; e.g. as in
## title The toc window also provides two links in its header for further functionalities:
- the “n” link toggles automatic numerotation of all header lines
- the “t” link toggles a toc cell in the notebook, which contains the actual table of contents, possibly with the numerotation of the different sections. The position of the toc cell in the notebook can be configured by creating a cell with metadata (View > Cell Toolbar > Edit Metadata): < “toc”: 1 >, this cell will then be replaced by the table of contents.
The state of these two toggles is memorized and restored on reload.
Configuration¶
The initial configuration can be set using the jupyter_nbextensions_configurator facility, included with jupyter_contrib_nbextnensions. Configurable options include:
- Display Table of Contents as a sidebar (otherwise as a floating window; default: true)
- Title of the sidebar/window (default: Contents )
- The maximum depth of headers to display on toc (with a default of 4)
- The state of the toc cell (default: false, ie not present)
- Title of the toc cell sidebar/window (default: Table of Contents )
- Add a navigation menu (default: true)
- Widening the display area to fit the browser window (may be useful with sidebar option; default: true)
- The numbering of headers (true by default)
- Moving header title and menus on the left (default: true)
- Marking toc item of first header displayed on viewport when scrolling the notebook (default: true)
- Skipping h1 headers, useful if you want to use h1 as unnumbered notebook title (default: false)
- Customization of highlighting the title of currently selected/running sections.
- Customization of background, fonts, border and highlighting colors in the toc window and navigation menus (as third demo).
- Collapse/uncollapse ToC2 sections when collapsible_headings is used to collapse/uncollapse notebook sections (default: false).
Some config settings are stored in notebook metadata, so that they can be altered per-notebook, as well as setting the default in the configurator. The differents states and position of the floating window have reasonable defaults and can be modfied per notebook.
Demo with dark theme¶

Export¶
It is possible to export (most of) table of contents functionalities to html. The idea is to link a relevant part of the javascript extension and the css, and add a small script in the html file. This is done using a template by
jupyter nbconvert FILE.ipynb --template toc
jupyter nbconvert FILE.ipynb --template toc2
An exporter is also available. It is now possible to export to html with toc by
jupyter nbconvert --to html_toc FILE.ipynb
If you also use latex_envs, you can embed both functionalities while exporting with
jupyter nbconvert --to html_with_toclenvs FILE.ipynb
For the first template (toc), the files toc2.js and main.css (originally located in /jupyter_contrib_nbextensions/nbextensions/toc2 ) must reside in the same directory as intended for the html file. In the second template, these files are linked to the ipython-contrib/jupyter_contrib_nbextensions github website. Export configuration (parameters) shall be edited directly in the template files (in templates directory /jupyter_contrib_nbextensions/templates ). An option “Save as HTML (with toc)” is also provided in the File menu and enables the direct conversion of the actual notebook. This option requires the IPython kernel and is not present with other kernels.
Testing¶
- At loading of the notebook, configuration and initial rendering of the table of contents were fired on the event “notebook_loaded.Notebook”. It happens that the extension is sometimes loaded after this event. I now rely on a direct rendering at load and on a combination of “notebook_loaded.Notebook” and “kernel_ready.Kernel”.
- This extension also includes a quick workaround as described in #429
History¶
- This extension was adapted by minrk in minrk/ipython_extensions from gist.github.com/magican/5574556
- Added to the ipython-contrib/jupyter_contrib_nbextensions repo by @JanSchulz
- @juhasch, automatic update on markdown rendering,
- @JanSchulz, enable maths in headers links
- @jfbercher december 06, 2015 – Big update: automatic numbering, toc cell, window dragging, configuration parameters
- @jfbercher december 24, 2015 – nested numbering in toc-window, following the fix by @paulovn in @minrk’s repo. December 30-31, updated config in toc2.yaml to enable choosing the initial visible state of toc_window via a checkbox ; and now resizable.
- @slonik-az february 13, 2016. Rewritten toc numberings (more robust version), fixed problems with skipped heading levels, some code cleanup
- @jfbercher february 21, 2016. Fixed some issues when resizing the toc window. Now avoid overflows, clip the text and add a scrollbar.
- @jfbercher february 22, 2016. Add current toc number to headings anchors. This enable to get unique anchors for recurring headings with the same text. An anchor with the original ID is still created and can be used (but toc uses the new ones!). It is also possible to directly add an html anchor within the heading text. This is taken into account when building toc links (see comments in code).
- @jfbercher april 29, 2016. Triggered by @cqcn1991, cf discussion here, add a sidebar option. The floating toc window can be dragged and docked as a left sidebar. The sidebar can be dragged out as a floating window. These different states are stored and restored when reloading the notebook. Add html export capability via templates toc.tpl and toc2.tpl (see above).
- @jfbercher may 04, 2016. Added a “Save as HTML with toc” menu. Added a new “Navigate” menu with presents the contents of the toc. Changed default styling for links in tocs.
- @jfbercher july 28, 2016. A dedicated exporter was added. It is now possible to export to html with toc by jupyter nbconvert —to html_toc FILE.ipynb
- @jfbercher september 21, 2016. Fixed empty size of navigation menu (if no resize had occur). Changed system/notebook configuration parameters storing, loading and merging.
- @jfbercher november 16, 2016.
- Fixed saving issue due to a race condition in loading/writing metadata; see issues #1882 and #762
- As suggested by @dinya in #791, added highlighting of the section that contains the currently edited/selected/executing cell. Colors can be customized by changing .toc-item-highlight-select and .toc-item-highlight-execute classes in css. -[update nov 23]. As suggested by @jcb91, the highlight colors can now be configured via the nbextensions–configurator, instead of changing the css.
- Threshold (number of headings levels in toc)taken globally as requested in #646 (if it exists, otherwise default)
- Make toc2 template inherits from nbextensions template, as mentioned in #847
- On header/menu/toolbar resize (resize-header.Page event), resize toc2 sidebar
- On ‘toggle-all-headers’ event from hide_menubar extension, resize toc2 sidebar
- Remove MathJax preview in headers and links – addresses (issue 14 in latex_envs)[https://github.com/jfbercher/jupyter_latex_envs/issues/14]
- Added a parameter to enable/disable cell widening (which is useful when sideBar is on) — default is to widen — address #871
- Updated README to please @KadeG in #871
- Support customization of background, fonts, border and highlighting colors in the toc window and navigation menus with PR #969
- correct toc tree construction
- simplify toc cell processing
- constrain draggable toc to the body
- various bits of cleanup
- add settings dialog for per-notebook metadata-stored settings
© Copyright 2015-2018, Jupyter Contrib Team. Revision 03109e43 .
Built with Sphinx using a theme provided by Read the Docs.
Read the Docs v: latestVersions latest stable Downloads On Read the Docs Project Home Builds Free document hosting provided by Read the Docs.
Как повысить продуктивность работы в Jupyter notebook с помощью Nbextensions
Jupyter notebook — удобная среда для функционального программирования. В работе часто приходится писать код, который подходит под конкретную задачу (обработка информации, парсинг сайтов, process mining и т.д). Такие задачи проще выполнять с функциональным подходом, и среда Jupyter notebook идеально подходит для этого.
573 показа
4.3K открытийОднако использование notebook’ов можно сделать ещё более удобным и продуктивным с помощью Jupyter Notebook Extensions. Это расширения для notebook, которые позволяют добавить множество «фич» для удобства работы. Сегодня я хочу поделиться собственным топом таких расширений.
Чтобы установить расширения, необходимо запустить следующие команды в promt:
pip install jupyter_contrib_nbextensions jupyter contrib nbextension install
После этого при запуске Jupyter Notebook появится новая вкладка Nbextensions.
На ней представлен список всех расширений. Для их включения необходимо нажать галочку рядом с ними. При выборе определённого расширения снизу раскрывается информация о самом расширении и дополнительные параметры.
Например, расширение ExecuteTime. Пишется короткая справка о функционале, и можно развернуть параметры и readme.md.
Сегодня хочу поделиться собственным топом расширений, которыми я пользуюсь каждый день.
Когда код пишется для разового использования, некритично не соблюдать различные стилистические правила «хорошего кодинга». Однако по опыту код просматривается и передается после его «разового» применения ещё много раз, поэтому для лучшей читаемости стоит приводить весь код в соответствие со стандартами, поэтому данный модуль крайне полезен.
Напишу простенький алгоритм, принимающий на вход 3 значения и выводящий True или False.
Специально сделала код плохо читаемым. Теперь применю новую кнопку, которая отформатирует весь код согласно стандартам pep8.
2. Table of Contents
На втором месте для меня является создание заголовков в коде для быстрого перемещения между ними. Больше всего данная функция удобна при создании учебных notebook или демонстрационных.
Например, вот оглавление из моих личных учебных notebook’ов:
Удобно, что при нажатии на интересующий заголовок тетрадь переходит к этому месту.
Создам пару заголовков в тренировочном notebook.
Для этого создаю ячейку markdown и напишу заголовок, используя «#» для обозначения уровня заголовка. Чем больше #, тем больше уровень заголовка.
# Test pep8 — это первый уровень заголовка. При нажатии на кнопку списков, слева высвечивается оглавление. Оно также автоматически нумеруется.
3. Codefolding
Внимательные читатели уже могли обратить внимание на серые стрелочки рядом с блоками кода на скриншотах выше.
При их нажатии блок скрывается/раскрывается. Например, блок if и else.
Данный функционал удобен при значительном объёме кода для лучшего понимания, также при разборе чужого кода или когда необходимо сконцентрироваться на определенной «ветке» алгоритма.
4. Execute Time
Также очень полезный инструмент, который позволяет отслеживать время выполнения ячейки без дополнительных импортов и применения функций. По умолчанию выводит данный параметр к каждой ячейке под ячейкой с кодом.
5. Table_beatifier
Инструмент для преобразования отображения таблиц. Очень удобен при работе с небольшими датасетами или отфильтрованными частями большого. На скриншотах ниже представлен обычный вариант numpy датасета (слева) и с использованием расширения table_beautifier (справа).
Главное различие – возможность фильтрации значений по столбцам.
6. Variable Inspector
Расширение для просмотра всех переменных в памяти, их типа, занимаемого места и значения. При добавлении расширения добавляется значок, как на скриншоте снизу.
В notebook при нажатии кнопки Variable Inspector появляется окно, которое можно перемещать, изменять размер и сворачивать.
В окне отображаются все переменные в памяти, их названия, типы, занимаемый размер и значение (для объектов различных модулей также поддерживается).
Таким образом, можно значительно упростить и оптимизировать процесс работы в Jupyter Notebook. Расширения будут полезны не только новичкам, но и опытным пользователям. Каждый сможет подобрать набор расширений под свои нужды.
Добавляем в Jupyter Notebooks красоту и интерактивность
Многие используют в своей работе Jupyter Notebooks. Но с ростом сложности проекта появляются проблемы. В блокноте появляются ячейки с красными пометками для самого себя «перед запуском укажи число. » или «задай количество итераций исходя из. ». Какой-то откат к командной строке получается.
Да и вывод данных на экран не всегда воспринимается без пояснений сторонним человеком, который привык к красивым таблицам, картинкам и прочим современным элементам интерфейса.
Например, у нас есть данные по площадям городов и численности населения. Выведем их на экран в «традиционном виде»:
tabledata = [["Москва", 2561, 12615882], ["Санкт-Петербург", 1439, 5383890], ["Ярославль", 205, 609828], ["Хабаровск", 383, 1321473]] tabledataВидим в блокноте:
[['Москва', 2561, 12615882], ['Санкт-Петербург', 1439, 5383890], ['Ярославль', 205, 609828], ['Хабаровск', 383, 1321473]]Современному, избалованному человеку такой формат отображения не всегда нравится. Нужно привести данные к более привычному табличному виду.
Можно использовать широко распространенную библиотеку pandas
import pandas as pd pd.DataFrame(tabledata, columns=["Город","Площадь (кв. км)", "Население (человек)"])
Если по каким-то причинам использование pandas не устраивает, можно воспользоваться другой библиотекой или написать свою функцию.
Рассмотрим одну из таких библиотек — tabulate (https://pypi.org/project/tabulate/)
Для установки запустите из командной строки pip install tabulatefrom IPython.display import HTML, display from tabulate import tabulate display(HTML(tabulate(tabledata, tablefmt='html')))
Можно вывести данные в «псевдографическом» виде.
print(tabulate(tabledata))
Можно добавить заголовки
print(tabulate(tabledata, headers=["Город","Площадь (кв. км)", "Население (человек)"]))
И индексы
display(HTML(tabulate(tabledata, headers=["Город","Площадь (кв. км)", "Население (человек)"], tablefmt='html', showindex="always")))tabulate позволяет получить визуально такой же результат как и pandas.
Можно написать свою функцию, которая потом обрастёт дополнительными возможностями.
from IPython.display import HTML, display def dataToTable(data, columns = None): if len(data) == 0 : display(HTML('Нет данных')) return hdr = '' if columns != None: for col in columns: # Формируем заголовок таблицы hdr = hdr + '' + col + ' ' hdr = '' + hdr + ' ' dt = '' for row in data: # Проходим циклом по всем строкам dt = dt + '' for cell in row: # И формируем тело таблицы dt = dt + ' ' display(HTML('' + str(cell) + ' ' dt = dt + '' + hdr + dt + '
')) # Выводим таблицу на экран dataToTable(tabledata, columns=["Город","Площадь (кв. км)", "Население (человек)"])
Вывод изображений
Мы привыкли к пиктограммам и иконкам. Даже в прогнозе погоды мы видим картинки с солнышками и тучками. Чтобы добавить изображения в наши программы можно использовать библиотеку IPython. Ее функция Image позволяет работать с изображениями (PNG/JPEG/GIF), размещенными как локально, так и на интернет-ресурсах. Задавать их размеры.
from IPython.display import Image # Библиотека для отображения картинок display(Image(url='https://habrastorage.org/webt/9m/2c/zd/9m2czdt-uv7oe6v-nws3frtw7-a.jpeg', width = 200) # Задаем ширину картинки ) # display(Image(filename='Python_royal_35.JPG', width = 200)) # Локальный файл
Украшаем текст
Конечно, можно генерировать HTML напрямую, используя все его возможности:
from IPython.core.display import display, HTML display(HTML("Мой зеленый текст"))
А можно воспользоваться библиотекой termcolor. Она позмоляет не углубляясь в HTML задавать цвет текста и фона, задавать атрибуты шрифта. Описание библиотеки тут — pypi.org/project/termcolor
from termcolor import colored # Для установки запустите из командной строки pip install termcolor print(colored("Красный текст (без атрибутов)", "red")) print(colored("Красный текст (подчеркивание)", "red", attrs=["underline"])) print(colored("Зеленый текст на красном фоне (без атрибутов)", "green", "on_red" )) print(colored("Зеленый текст на красном фоне (bold)", "green", "on_red", attrs=["bold"]))
Отображаем прогресс выполнения задачи
Никому не нравится следить за ходом выполнения длительной задачи не понимая какая часть работы уже выполнена.

Видеть сколько осталось — гораздо приятнее (да-да, знаю, что скорость движения «червяка» может меняться).

Для установки используйте команды
pip install ipywidgets jupyter nbextension enable --py widgetsnbextensionfrom ipywidgets import IntProgress from IPython.display import display import time prgBar = IntProgress(min = 0, max = 100) # Создаем прогрессбар display(prgBar) # Выводим прогрессбар на экран while prgBar.value < prgBar.max: # Пока положение не дошло до максимума - продолжаем цикл prgBar.value = prgBar.value + 1 # Двигаем "полоску" time.sleep(0.1) print('Процесс завершен')
Интерактивное взаимодействие с пользователем
Та же библиотека ipywidgets позволяет не только отображать, но и вносить информацию.
Самый, наверное, простой пример взаимодействия с пользователем — это реакция на нажатие кнопки. Библиотека ipywidgets позволяет создать кнопку с заданными параметрами (текстом, стилем и размерами) и назначить функцию-обработчик ее нажатия.
from IPython.display import display from ipywidgets import Button # Создаем кнопку с нужными параметрами button1 = Button(description="Нажми меня!", button_style='success' # 'success', 'info', 'warning', 'danger', '' ) def on_button_clicked(b): # Описываем обработчик события print("Клик") button1.on_click(on_button_clicked) # Назначаем этот обработчик на событие "on_click" display(button1) # Отображаем кнопку
Размер кнопки задается при помощи свойства layout
from IPython.display import display from ipywidgets import Button, Layout button2 = Button(description='Кнопка с заданными размерами', button_style='success', layout=Layout(width='50%', height='80px')) display(button2)
Для удобного ввода пользователем чисел и дат есть компоненты FloatSlider и DatePicker.
Чтобы получить введенное значение — используется свойство .value
Чтобы отловить момент изменения значений, нужно использовать событие observe
from IPython.display import display from ipywidgets import FloatSlider fSlider = FloatSlider( value=7.5, # Первоначальное значение min=0, # Минимум max=10.0, # Максимум step=0.1, # Шаг изменения description='Параметр:', continuous_update=False, # True - событие observe возникает для каждого шага при изменении значения orientation='horizontal' # Горизонтальное или вертикальное расположение ) def on_value_change(b): print(b['old'], '->', b['new']) fSlider.observe(on_value_change, names='value') display(fSlider)
Проверим доступ к текущему значению:
fSlider.valuefrom IPython.display import display from ipywidgets import DatePicker dPicker = DatePicker( description='Дата:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) dPicker.observe(on_button_clicked, names='value') display(dPicker)
Для выбора одного значения из нескольких вариантов есть список RadioButtons, выпадающий список Dropdown и группа кнопок ToggleButtons. value и observe для этих компонентов используются точно так же.
Значения можно задавать как в виде перечня строчных величин, так и в виде списка кортежей.
Попробуем самый простой вариант, со значениями в виде списка строк.
from IPython.display import display from ipywidgets import RadioButtons rButtons1 = RadioButtons( options=['Красный', 'Желтый', 'Зеленый'], value='Желтый', # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) rButtons1.observe(on_button_clicked, names='value') display(rButtons1)
Выведем на экран значение:
rButtons1.valueВ этом режиме значением rButtons1.value является строка.
Пробуем второй вариант задания списка значений:
from IPython.display import display from ipywidgets import RadioButtons rButtons2 = RadioButtons( options=[('Красный', 1), ('Желтый', 2), ('Зеленый', 3)], value=2, # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) rButtons2.observe(on_button_clicked, names='value') display(rButtons2)
В этом режиме значением rButtons2.value является число, соответствующее выбранному значению.
Аналогично работает выпадающий список (Dropdown)
from IPython.display import display from ipywidgets import Dropdown dropdown1 = Dropdown( options=[('Красный', 1), ('Желтый', 2), ('Зеленый', 3)], value=2, # Выбор по умолчанию description='Цвет:' ) def on_button_clicked(b): print(b['old'], '->', b['new']) dropdown1.observe(on_button_clicked, names='value') display(dropdown1)
Для ввода булевых значений можно использовать Checkbox и ToggleButton. У них есть уже знакомые нам value и observe.
from IPython.display import display from ipywidgets import Checkbox cb1 = Checkbox( value=False, description='Согласен' ) def on_button_clicked(b): print(cb1.value) cb1.observe(on_button_clicked, names='value') display(cb1)
from IPython.display import display from ipywidgets import ToggleButton tb1 = ToggleButton( value=False, description='Не нажата', disabled=False, button_style='success', # 'success', 'info', 'warning', 'danger' or '' tooltip='Принять условия', icon='check' ) tb2 = ToggleButton( value=True, description='А эта нажата', disabled=False, button_style='success', # 'success', 'info', 'warning', 'danger' or '' tooltip='Принять условия', icon='check' ) display(tb1, tb2)
Для ввода многострочного текста служет компонент Textarea
from IPython.display import display from ipywidgets import Textarea, Layout Textarea1 = Textarea( value='Привет, Habr!', placeholder='Введите текст', description='Текст:', layout=Layout(width='600px', height='100px') ) display(Textarea1)
ИИ (интерфейсные изыски)
Когда элементов интерфейса становится слишком много, хочется пойти по пути десктопных приложений и объединить отдельные элементы в обособленные группы.
Для этого нам пригодятся Accordion и Tab.
from IPython.display import display from ipywidgets import Accordion, IntSlider, Text accordion = Accordion(children=[IntSlider(value=42), Text(value='Сорок два')]) accordion.set_title(0, 'Раздел 1') accordion.set_title(1, 'Раздел 2') display(accordion)
from IPython.display import display from ipywidgets import Tab, IntSlider, Text tab = Tab() tab.children = [IntSlider(value=42), Text(value='Сорок два')] tab.set_title(0, 'Раздел 1') tab.set_title(1, 'Раздел 2') display(tab)
Библиотека ipywidgets не ограничивается элементами, которые я перечислил. В ней еще масса полезных вещей, которые могут сделать программы в Jupyter Notebooks более привлекательными.
- Python
- Программирование
Запуск записных книжек Jupyter Notebook в рабочей области
В этой статье показано, как запускать записные книжки Jupyter в рабочей области Студия машинного обучения Azure. Существуют и другие способы запуска записной книжки: Jupyter, JupyterLab и Visual Studio Code. Vs Code Desktop можно настроить для доступа к вычислительному экземпляру. Или используйте VS Code для Интернета непосредственно из браузера и без каких-либо необходимых установок или зависимостей.
Мы рекомендуем попробовать VS Code для Интернета, чтобы воспользоваться преимуществами простой интеграции и расширенной среды разработки, которая предоставляется. VS Code для Интернета предоставляет множество функций VS Code Desktop, включая поиск и синтаксис при просмотре и редактировании. Дополнительные сведения об использовании VS Code Desktop и VS Code для Интернета см. в статье "Запуск Visual Studio Code" с Машинное обучение Azure (предварительная версия) и удаленное подключение к вычислительному экземпляру (предварительная версия) в VS Code.
Независимо от того, какое решение вы используете для запуска записной книжки, у вас будет доступ ко всем файлам из рабочей области. Сведения о создании файлов и управлении ими, включая записные книжки, см. в разделе Создание файлов и управление ими в рабочей области.
В этой статье показано, как запустить записную книжку непосредственно в студии.
Компоненты, которые помечены как "предварительная версия", предоставляются без соглашения об уровне обслуживания и не рекомендуются для использования в рабочей среде. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.
Необходимые компоненты
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Рабочая область машинного обучения. См.раздел Создание ресурсов рабочей области.
- Удостоверение пользователя должно иметь доступ к учетной записи хранения по умолчанию вашей рабочей области. Возможность чтения, изменения и создания записных книжек зависит от уровня доступа к рабочей области. Например, участник может редактировать записную книжку, в то время как читатель может только просматривать ее.
Доступ к записным книжкам из рабочей области
Используйте раздел Записные книжки рабочей области для редактирования и запуска записных книжек Jupyter.
- Войдите в Студию машинного обучения Azure.
- Выберите рабочую область, если она еще не открыта
- Выберите Записные книжки слева.
Изменение записной книжки
Чтобы изменить записную книжку, откройте любую записную книжку, расположенную в разделе User Files (Файлы пользователя) рабочей области. Выберите ячейку, которую вы хотите изменить. Если у вас нет записных книжек в этом разделе, см. статью Создание файлов и управление ими в рабочей области.
Вы можете изменить записную книжку без подключения к вычислительному экземпляру. Если нужно выполнить ячейки в записной книжке, выберите или создайте вычислительный экземпляр. Если выбрать остановленный вычислительный экземпляр, он автоматически запустится при запуске первой ячейки.
Если выполняется вычислительная операция, можно также использовать функцию завершения кода на платформе IntelliSense в любой записной книжке Python.
Вы также можете запустить Jupyter или JupyterLab на панели инструментов записной книжки. Машинное обучение Azure не предоставляет обновления и не исправляет ошибки из Jupyter или JupyterLab, так как они находятся вне границы служба поддержки Майкрософт.
Режим фокусировки
Используйте режим фокусировки, чтобы развернуть текущее представление и сосредоточиться на активных вкладках. Режим фокусировки скрывает обозреватель файлов записных книжек.
- На панели инструментов окна терминала выберите режим фокусировки, чтобы включить режим фокусировки. В зависимости от ширины окна средство может находиться в меню . на панели инструментов.
- В режиме фокусировки вернитесь к стандартному представлению, выбрав Стандартное представление.
Завершение кода (IntelliSense)
IntelliSense — это вспомогательное средство для написания кода, включающее множество возможностей: "Список членов", "Сведения о параметрах", "Краткие сведения" и "Завершить слово". За несколько нажатий клавиш вы можете:
- узнать больше о коде, который вы используете;
- следить за параметрами, которые вы вводите;
- добавлять вызовы в свойства и методы.
Совместное использование записной книжки
Ваши записные книжки хранятся в учетной записи хранения рабочей области и могут использоваться совместно с другими пользователями в зависимости от уровня доступа к рабочей области. Они могут открывать и редактировать записную книжку, если у них есть соответствующий доступ. Например, участник может редактировать записную книжку, в то время как читатель может только просматривать ее.
Другие пользователи рабочей области могут найти записную книжку в разделе "Записные книжки", "Файлы пользователей" Студия машинного обучения Azure. По умолчанию записные книжки находятся в папке с вашим именем пользователя, и другие пользователи могут получить к ним доступ.
Вы также можете скопировать URL-адрес из браузера при открытии записной книжки, а затем отправить его другим пользователям. Если у них есть соответствующий доступ к рабочей области, они могут открыть записную книжку.
Так как вы не делитесь вычислительными экземплярами, другие пользователи, запускающие записную книжку, будут использовать собственный вычислительный экземпляр.
Совместная работа с комментариями записной книжки (предварительная версия)
Используйте комментарий записной книжки для совместной работы с другими пользователями, имеющими доступ к этой записной книжке.
Переключить отображение области комментариев можно с помощью инструмента Notebook comments (Комментарии записной книжки) в верхней части записной книжки. Если экран недостаточно слишком широкий, откройте этот инструмент, выбрав … в конце набора инструментов.

Вне зависимости от того, отображается ли область комментариев, можно добавить комментарий в любую ячейку кода.

- Выделите фрагмент текста в ячейке кода. В ячейке кода можно комментировать только текст.
- Чтобы создать комментарий, используйте инструмент New comment thread (Создать цепочку комментариев).
- Если область комментариев была ранее скрыта, она откроется.
- Введите комментарий и опубликуйте его с помощью инструмента или нажав клавиши CTRL+ВВОД.
- После публикации комментария выберите . в правом верхнем углу:
- изменить комментарий;
- разрешить цепочку;
- удалить цепочку.
Текст, для которого был добавлен комментарий, будет отображаться в коде фиолетовым цветом. При выборе комментария в области комментариев записная книжка прокрутится до ячейки, содержащей выделенный текст.
Комментарии сохраняются в метаданных ячейки кода.
Очистка записной книжки (предварительная версия)
В ходе создания записной книжки обычно образуются ячейки, используемые для просмотра или отладки данных. Функция сбора поможет вам создать чистую записную книжку без этих лишних ячеек.

- Выполните все ячейки записной книжки.
- Выберите ячейку, содержащую код, который должна запускать новая записная книжка. Например, код, который отправляет эксперимент, или код, регистрирующий модель.
- Нажмите значок Сбор, отображаемый на панели инструментов ячейки.
- Введите имя новой, "собранной" записной книжки.
Новая записная книжка содержит только ячейки кода, при этом все ячейки должны получать те же результаты, что и выбранная ячейка для сбора.
Сохранение записной книжки и создание контрольных точек
Машинное обучение Azure создает файл контрольных точек при создании IPYNB-файла.
На панели инструментов записной книжки выберите меню, а затем Файл>Сохранить и создать контрольные точки, чтобы вручную сохранить записную книжку и добавить файл контрольных точек, связанный с записной книжкой.

Записные книжки автоматически сохраняются каждые 30 секунд. Функция автосохранения обновляет только исходный IPYNB-файл, а не файл проверки.
Выберите Контрольные точки в меню записной книжки, чтобы создать именованную контрольную точку и вернуть записную книжку к сохраненной контрольной точке.
Экспорт записной книжки
На панели инструментов записной книжки выберите меню и нажмите Экспортировать как, чтобы экспортировать записную книжку как любой из поддерживаемых типов:

Экспортированный файл сохраняется на компьютере.
Запуск записной книжки или скрипта Python
Чтобы запустить записную книжку или скрипт Python, сначала подключитесь к выполняющемуся вычислительному экземпляру.
- Если у вас нет вычислительной операции, выполните следующие действия, чтобы создать ее:
- На панели инструментов записной книжки или скрипта справа от раскрывающегося списка "Вычислительная среда" нажмите + Создать вычислительную среду. В зависимости от размера экрана этот параметр может находиться в меню . .

- Присвойте имя вычислительной операции и выберите значение Virtual Machine Size (Размер виртуальной машины).
- Выберите Создать.
- Вычислительный экземпляр подключается к файлу автоматически. Теперь можно запускать ячейки записной книжки или скрипт Python, используя инструмент слева от вычислительного экземпляра.
- На панели инструментов записной книжки или скрипта справа от раскрывающегося списка "Вычислительная среда" нажмите + Создать вычислительную среду. В зависимости от размера экрана этот параметр может находиться в меню . .
- Если ваш вычислительный экземпляр остановлен, выберите Запустить вычислительную среду справа от раскрывающегося списка "Вычислительная среда". В зависимости от размера экрана этот параметр может находиться в меню . .

После подключения к вычислительному экземпляру используйте панель инструментов для запуска всех ячеек в записной книжке или control + ВВОД, чтобы запустить одну выбранную ячейку.
Только вы можете просматривать и использовать созданные вами вычислительные операции. Ваша папка User files (Файлы пользователя) хранится отдельно от виртуальной машины и является общей для всех вычислительных операций в рабочей области.
Изучение переменных в записной книжке
На панели инструментов записной книжки используйте Обозреватель переменных, чтобы отобразить имя, тип, длину и примеры значений для всех переменных, созданных в записной книжке.

Выберите инструмент, чтобы открыть окно обозревателя переменных.

Навигация с помощью оглавления
На панели инструментов записной книжки используйте инструмент Оглавление, чтобы отобразить или скрыть оглавление. Запустите ячейку Markdown с заголовком, чтобы добавить ее в оглавление. Выберите запись в таблице, чтобы прокрутить эту ячейку в записной книжке.

Изменение среды записной книжки
С помощью панели инструментов записной книжки можно изменить среду, в которой выполняется записная книжка.
Эти действия не изменят состояние записной книжки или значения каких-либо переменных в записной книжке:
Действие Результат Остановка ядра Все выполняемые ячейки останавливаются. При выполнении ячейки ядро автоматически перезапускается. Переход в другой раздел рабочей области Выполняемые ячейки останавливаются. Эти действия сбрасывают состояние записной книжки и все переменные в записной книжке.
Действие Результат Изменение ядра Записная книжка использует новое ядро. Переключение вычисления Записная книжка автоматически использует новое вычисление. Сброс вычисления Повторный запуск при попытке выполнить ячейку. Остановка вычисления Ячейки не выполняются. Открытие записной книжки в Jupyter или JupyterLab Записная книжка открывается на новой вкладке. Добавление новых ядер
Используйте терминал для создания и добавления новых ядер в вычислительный экземпляр. Записная книжка автоматически находит все ядра Jupyter, установленные на подключенном вычислительном экземпляре.
Используйте раскрывающееся меню ядра справа, чтобы перейти на любое из установленных ядер.
Управление пакетами
Так как вычислительный экземпляр имеет несколько ядер, убедитесь, что используются %pip или %conda волшебные функции, которые устанавливают пакеты в текущее работающее ядро. Не используйте !pip или !conda не относится ко всем пакетам (включая пакеты за пределами запущенного ядра).
Индикаторы состояния
Индикатор рядом с раскрывающимся списком Compute (Вычисление) отображает его состояние. Состояние также отображается в самом раскрывающемся списке.
Color Состояние вычисления Зеленый Вычисление выполняется Красный Сбой при вычислении Черный Вычисление остановлено Голубой Создание, запуск, перезапуск, настройка вычисления Серый Идет процесс удаления или остановки вычисления Индикатор рядом с раскрывающимся списком Kernel (Ядро) отображает его состояние.
Color Состояние ядра Зеленый Ядро подключено, неактивно или занято Серый Ядро не подключено Сведения о вычислениях
Сведения о вычислительных операциях см. на странице Compute (Вычисления) в Студии.
Полезные сочетания клавиш
Аналогично Jupyter Notebook, Студия машинного обучения Azure записные книжки имеют модальный пользовательский интерфейс. Клавиатура выполняет разные действия в зависимости от того, в каком режиме находится ячейка записной книжки. Студия машинного обучения Azure записные книжки поддерживают следующие два режима для заданной ячейки кода: режим команд и режим редактирования.
Сочетания клавиш для режима команд
Ячейка находится в командном режиме, если текстовый курсор не запрашивает ввод. Когда ячейка находится в режиме команд, вы можете редактировать записную книжку целиком, но не вводить ее в отдельные ячейки. Войдите в режим команд, нажав ESC или щелкнув за пределами области редактора ячейки с помощью мыши. Левая граница активной ячейки — синяя и сплошная, а кнопка Запуск — синяя.

Ярлык Description ВВОД Ввод режима редактирования SHIFT + ВВОД Запуск ячейки, выбор следующей CTRL/CMD+ВВОД Запустить ячейки ALT + ВВОД Запуск ячейки, вставка ячейки кода ниже CTRL/CMD + ALT + ВВОД Запуск ячейки, вставка ячейки Markdown ниже ALT + R Запустить все Y Преобразование ячейки в код M Преобразование ячейки в Markdown ВВЕРХ/K Выбор ячейки выше ВНИЗ/J Выбор ячейки ниже А Вставка ячейки кода выше Б Вставка ячейки кода ниже CTRL/CMD + SHIFT + A Вставка ячейки Markdown выше CTRL/CMD + SHIFT + B Вставка ячейки Markdown ниже X Вырезание выбранной ячейки C Копирование выбранной ячейки SHIFT + V Вставка выбранной ячейки выше V Вставка выбранной ячейки ниже D D Удаление выбранной ячейки O Переключить выходные данные SHIFT + O Переключение прокручивания выходных данных I I Прерывание ядра 0 0 Перезапуск ядра SHIFT + ПРОБЕЛ Прокрутка вверх Space Прокрутка вниз TAB Переход фокуса на следующий фокусируемый элемент (при отключенной ловушке фокуса) CTRL/CMD + S Сохранение записной книжки 1 Изменение на h1 2 Изменение на h2 3 Изменение на h3 4 Изменение на h4 5 Изменение на h5 6 Изменение на h6 Сочетания клавиш режима правки
Режим правки обозначается текстовым курсором для ввода текста в области редактора. Когда ячейка находится в режиме правки, можно ввести текст в ячейку. Введите режим редактирования, нажав Enter или выберите область редактора ячейки. Левая граница активной ячейки — зеленая и пунктирная, а кнопка Запуск — зеленая. Вы также видите курсор в ячейке в режиме редактирования.

С помощью приведенных ниже сочетаний клавиш вы можете легче перемещаться и выполнять код в записных книжках Машинного обучения Azure в режиме правки.
Ярлык Description ESCAPE Вход в режим команд CTRL/CMD + ПРОБЕЛ Активация IntelliSense SHIFT + ВВОД Запуск ячейки, выбор следующей CTRL/CMD+ВВОД Запустить ячейки ALT + ВВОД Запуск ячейки, вставка ячейки кода ниже CTRL/CMD + ALT + ВВОД Запуск ячейки, вставка ячейки Markdown ниже ALT + R Выполнение всех ячеек Up Перемещение курсора вверх или в предыдущую ячейку Down Перемещение курсора вниз или в следующую ячейку CTRL/CMD + S Сохранение записной книжки CTRL/CMD + стрелка вверх Переход к началу ячейки CTRL/CMD + стрелка вниз Передох к концу ячейки TAB Завершение кода или отступ (если включена ловушка фокуса) CTRL/CMD + M Включение или отключение ловушки фокуса CTRL/CMD + ] Отступ CTRL/CMD + [ Понижение уровня CTRL/CMD + A Выделить все CTRL/CMD + Z Отмена CTRL/CMD + SHIFT + Z Вернуть CTRL/CMD + Y Вернуть CTRL/CMD + HOME Переход к началу ячейки CTRL/CMD + END Передох к концу ячейки CTRL/CMD + стрелка влево Переход на одно слово влево CTRL/CMD + стрелка вправо Переход на одно слово вправо Control/Command + BACKSPACE Удаление слова перед CTRL/CMD + DELETE Удаление слова после CTRL/CMD + / Переключение комментария в ячейке Устранение неполадок
- Подключение к записной книжке. Если вы не можете подключиться к записной книжке, убедитесь, что связь с веб-сокетом не отключена. Для использования функциональности Jupyter экземпляра вычислительных ресурсов необходимо включить связь через веб-сокет. Убедитесь, что сеть разрешает подключения через веб-сокеты к *.instances.azureml.net и *.instances.azureml.ms.
- Частная конечная точка. При развертывании вычислительного экземпляра в рабочей области с частной конечной точкой доступ к нему можно получить только из виртуальной сети. Если вы используете пользовательский ФАЙЛ DNS или узлов, добавьте запись для < имени >экземпляра .< регион >.instances.azureml.ms с частным IP-адресом частной конечной точки рабочей области. Дополнительные сведения см. в статье о пользовательской DNS.
- Сбой ядра: если ядро разбилось и было перезапущено, можно выполнить следующую команду, чтобы просмотреть журнал Jupyter и узнать дополнительные сведения: sudo journalctl -u jupyter Если проблемы с ядром не исчезли, рекомендуется использовать вычислительный экземпляр с большим объемом памяти.
- Ядро не найдено или Операции ядра отключены. Такая ошибка может возникнуть при использовании ядра Python 3.8 по умолчанию в вычислительном экземпляре. Для ее исправления можно использовать один из следующих методов.
- Создание нового вычислительного экземпляра. Будет использован новый образ, в котором эта проблема была устранена.
- Используйте ядро Py 3.6 в существующем вычислительном экземпляре.
- В терминале в среде py38 по умолчанию запустите pip install ipykernel==6.6.0 ИЛИ pip install ipykernel==6.0.3
Следующие шаги
- Выполнение первого эксперимента
- Резервное копирование хранилища файлов с помощью моментальных снимков
- Работа в безопасных средах
