Как я могу выполнить код по строкам в jupyter-notebook?

Я читаю книгу, Python Machine Learning и пытаюсь проанализировать код. Но он предлагает только файл *.ipynb и это делает меня очень докучливым.

Например,

enter image description here

В этом коде я не хочу запускать целое In[9] но хочу запускать строку за строкой, чтобы я мог проверять каждое значение переменной и знать, что делает каждая функция библиотеки.

Должен ли я комментировать каждый раз, когда хочу выполнить часть кодов? Я просто хочу что-то вроде Execute the block part как в MATLAB

А также, допустим, я прокомментирую часть кода и выполняю строчную линию. Как проверить каждое значение переменной без использования функции print() или display()? Как вы знаете, мне не нужно использовать print() для проверки значения в python interactive shell в терминале. Есть ли аналогичный путь в Jupyter?

Ответы

Ответ 1

ast_node_interactivity

В Jupyter Notebook или в консоли IPython вы можете настроить это поведение с помощью ast_node_interactivity:

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

Примеры

В этом конфиге каждая строка будет напечатана, даже если они находятся в одной ячейке.

  • В записной книжке:

Jupyter notebook multiple lines

  • В консоли IPython:

IPython console multiple lines

Примечания

  • None не отображается.

  • Есть много других полезных советов здесь ("28 советов, приемов и ярлыков для ноутбуков Jupyter - Dataquest").

Ответ 2

Вы можете просто добавить новые ячейки, а затем вырезать и вставить части, которые вы хотите в новые ячейки. Например, вы можете поместить импорт и %matplotlib inline в первую ячейку (так как их нужно когда-либо запускать только при первом открытии ноутбука), поколение y во втором, поколение X в третьем и рисунок в четвертом. Затем вы можете запускать каждую ячейку один за другим. Это всего лишь пример, вы можете разделить его, как хотите (хотя я рекомендую объединить импорт в самом начале).

Что касается печати, если последняя строка в ячейке не назначена переменной, она автоматически печатается. Так, например, скажем, следующая ячейка:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)
y

Затем содержимое y будет отображаться после того, как клетки. Аналогично, если у вас есть ячейка с этим содержимым:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)
y.sum()

Затем результат операции y.sum() будет отображаться после ячейки. С другой стороны, если выполняется следующая ячейка, то ничего не печатается:

y = df.iloc[0:100, 4].values
y = np.where(y == 'spam', -1, 1)

Для этого нет ничего печатного:

z = {}
y = df.iloc[0:100, 4].values
z['spam'] = np.where(y == 'spam', -1, 1)

Ответ 3

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