Начиная второй ноутбук Jupyter, где первый остановился - PullRequest
0 голосов
/ 13 марта 2020

Контекст:

Я начал обучать себя нескольким новым библиотекам, используя Jupyter Lab. Я знаю, что показывать эмоции на SO строго запрещено, и это будет отредактировано, но ВАУ, ноутбуки Jupyter крутые!

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

Например, в тетради 1 я говорю (учу себя) о линейной регрессии. Он делает заметки по словарю, показывает некоторые математические формулы, а затем прорабатывает некоторые примеры кода. Конечный раздел.

В блокноте 2 я начинаю разговор о различных метриках, чтобы показать, насколько эффективной была регрессионная модель. Затем я хочу выполнить некоторый код для вычисления этих метрик ... но весь код для модели регрессии находится в последнем блокноте, и я не могу получить к нему доступ.

Вопрос:

Есть ли способ связать эти два блокнота вместе, чтобы мне не пришлось переписывать код из первого?

Моя попытка:

Кажется, что самое близкое к тому, что я хочу сделать, это использовать

%run notebook_01.ipynb

Однако, это выдает ошибку. Обратите внимание, что он, похоже, ищет файл .py для запуска:

ERROR:root:File 'linear_regression01.ipynb.py' not found.

Я нашел несколько вопросов / ответов, где это работает для других пользователей, но это не для меня.

Редактировать: Я заставил магию c команду %run работать, однако она запускается и печатает весь первый блокнот во втором. Хорошо бы знать, как это сделать, и он достигает цели, заключающейся в том, что нет необходимости перекодировать, но он перепечатывает абсолютно все, чего я не хочу.

Ответы [ 2 ]

1 голос
/ 13 марта 2020

Если вы запустите это из командной строки:

jupyter nbconvert --to script first_notebook.iynb

Он создаст файл python из вашей первой записной книжки с именем 'first_notebook.py'. После этого вы можете импортировать этот файл во второй блокнот с помощью:

import first_notebook
0 голосов
/ 13 марта 2020

Хорошо, я нашел ответ путем подавления выводов:

Просто поместите это в верхней части вашего второго блокнота:

from IPython.utils import io
with io.capture_output() as captured:
    %run your_linked_notebook.ipynb 

Это приведет к тому, что блокнот вы хотите связать для запуска, что позволяет вам использовать любые данные из него, но без необходимости видеть все выходные данные и визуализации из него.

Это, вероятно, не лучший способ для go, если вы работаете с большое количество данных или связывание множества ноутбуков, которые выполняют дорогостоящие вычисления, но, скорее всего, сработают для большинства людей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...