LoginSignup
1
0

More than 3 years have passed since last update.

JupyterNotebookの対話モードで、変数や式を複数行表示する

Last updated at Posted at 2020-04-09

JupyterNotebookを使って、プログラムの実行結果を表示するには、print文を使う方法と式や変数を入力する方法があります。

print文を使う方法は、標準出力といわれており、次のように出力します。1つのセルでいくつもの出力ができます。
image.png
これに対し、式や変数をそのまま入力する方法があり、対話モード(インタラクティブシェル)での自動表示などと言われています。「ちょっと実行結果を見たい」という場合に"print"を入力する手間が省けるので便利です。ところが、対話モード(インタラクティブシェル)での自動表示では、1つのセルの中で、最後の結果しか表示してくれないという問題があります。
image.png
通常は、状況に合わせて使い分ければよいのですが、問題なのはSympyで数式を表示するときです。次の通り、標準出力でよりも対話モードでの自動表示の方がわかりやすく数式を表示してくれます。
image.png
そうすると、1つのセルで複数の対話モード(インタラクティブシェル)での自動表示ができるようにすることができると便利です。このためには、次のように入力して実行します。

インタラクティブシェルで変数や数式を複数行表示させる
from IPython import InteractiveShell
InteractiveShell.ast_node_interactivity = "all" 

JupyterNotebookはIPythonという対話型シェル上で動いており、IPythonではTerminal IPython optionsでいろいろな設定ができます。このうち、"ast_node_interactivity"パラメータでインタラクティブシェルの表示方法を指定することができます。ast_node_interactivityのデフォルトは"last_expr"(最後だけ)ですが、これを"all"とすることで、すべて表示することができます。

「$\log(x+1)$の5階までの微分を求めたい!」というような場合にも、こんな芸当もできてしまいます。

n次までの導関数を求める
import sympy
sympy.var("x y")
f =sympy.ln(x+1)
for i in range(6):
    print(str(i) + '階の微分')
    sympy.diff(f,x,i)

image.png

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0