Как я могу выполнить код по строкам в jupyter-notebook?
Я читаю книгу, Python Machine Learning
и пытаюсь проанализировать код. Но он предлагает только файл *.ipynb
и это делает меня очень докучливым.
Например,
В этом коде я не хочу запускать целое 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"
Примеры
В этом конфиге каждая строка будет напечатана, даже если они находятся в одной ячейке.
Примечания
Ответ 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 вы можете просто щелкнуть правой кнопкой мыши и разделить ячейку, щелкнув правой кнопкой мыши, когда закончите.