簡體   English   中英

如何在 jupyter-notebook 中逐行執行代碼?

[英]How can I execute the code line by line in jupyter-notebook?

我正在閱讀Python Machine Learning一書,並嘗試分析代碼。 但它只提供*.ipynb文件,這讓我*.ipynb

例如,

在此處輸入圖片說明

在這段代碼中,我不想運行整個In[9]而是想逐行運行,以便我可以檢查變量的每個值並了解每個庫函數的作用。

每次我想執行部分代碼時都必須評論嗎? 我只想要像在MATLAB Execute the block part這樣的東西

而且,假設我注釋了代碼的某些部分並逐行執行。 如何在不使用print()display()情況下檢查每個變量的值? 如您所知,我不必使用print()在終端的python interactive shell中檢查值。 Jupyter有類似的方法嗎?

ast_node_interactivity

在 Jupyter Notebook 或 IPython 控制台中,您可以使用ast_node_interactivity配置此行為:

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

例子

有了這個配置,每一行都會被打印出來,即使它們在同一個單元格中。

  • 在筆記本中:

Jupyter 筆記本多行

  • 在 IPython 控制台中:

IPython 控制台多行

筆記

  • None顯示。

  • 還有其他許多有用的技巧在這里(“28個Jupyter筆記本技巧,竅門和捷徑- Dataquest公司”)。

您可以只添加新單元格,然后將您想要的部分剪切並粘貼到新單元格中。 因此,例如,您可以將導入和%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)

在 PyCharm Jupyter Notebooks 中,您只需右鍵單擊並拆分單元格,完成后右鍵單擊合並。

我認為您可以在行之間打印變量。 這是最簡單的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM