2016-07-12 3 views
12

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

Например,

enter image description here

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

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

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

+4

Вы можете быстро разделить эту ячейку на несколько ячеек, поместив курсор в нужном месте, чтобы разделить на, и нажмите CTRL + SHIFT + - – AGS

+0

@AGS Спасибо. Каким-то образом он не работает с минусом на клавиатуре. –

ответ

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) 
1

ast_node_interactivity

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

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

Примеры

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

  • В Notebook:

Jupyter notebook multiple lines

  • В IPython консоли:

IPython console multiple lines

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

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

Смежные вопросы