web-dev-qa-db-ja.com

jupyter-notebookで行ごとにコードを実行するにはどうすればよいですか?

私は本_Python Machine Learning_を読んでいて、コードを分析しようとしました。しかし、それは_*.ipynb_ファイルのみを提供し、とても面倒です。

例えば、

enter image description here

このコードでは、_In[9]_全体を実行したくありませんが、変数の各値を確認し、各ライブラリ関数が何をするかを知るために、行ごとに実行したいです。

コードの一部を実行するたびにコメントする必要がありますか? MATLABのような_Execute the block part_のようなものが欲しい

また、コードの一部をコメント化し、1行ずつ実行するとします。 print()またはdisplay()を使用せずに各変数の値を確認するにはどうすればよいですか?ご存知のように、ターミナルで_python interactive Shell_の値を確認するためにprint()を使用する必要はありません。 Jupyterにも同様の方法がありますか?

21
user3595632

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 Notebookのヒント、トリック、ショートカット-Dataquest")。

12
Eric Duminil

新しいセルを追加して、新しいセルに必要な部分をカットアンドペーストするだけです。したがって、たとえば、最初のセルにインポートと_%matplotlib inline_を配置できます(ノートブックを最初に開いたときにのみ実行する必要があるため)、2番目のy世代、 3番目はX生成、4番目はプロットです。その後、各セルを次々に実行できます。これは単なる例であり、必要に応じて分割できます(ただし、最初にインポートをまとめることをお勧めします)。

印刷に関しては、セルの最後の行が変数に割り当てられていない場合、自動的に印刷されます。したがって、たとえば、次のようなセルがあるとします。

_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
TheBlackCat

PyCharm Jupyter Notebooksでは、セルを右クリックして分割するだけで、完了したら右クリックでマージできます。

0
Jonathan