PythonのNumPyモジュールの数値の表示を見やすくする

NumPyモジュールで数値計算をしていると、指数表示となり見ずらい場合があります。たとえば、次のように自然対数のべき乗を計算するケースです。

#1 NumPyモジュールで自然対数の10乗まで計算する
import numpy as np
array = np.arange(1,11)
expon=np.exp(array)
expon
array([2.71828183e+00, 7.38905610e+00, 2.00855369e+01, 5.45981500e+01,
       1.48413159e+02, 4.03428793e+02, 1.09663316e+03, 2.98095799e+03,
       8.10308393e+03, 2.20264658e+04])

結果は上の通りです。桁数が大きいうえにe+02のようなわかりづらい表現になります。まずは、桁数を小数点以下3桁にします。このときにはset_printoptions関数を使います。

#2 NumPyモジュールで表示を小数点3桁までにする
np.set_printoptions(precision=3)
array = np.arange(1,11)
expon=np.exp(array)
expon
array([2.718e+00, 7.389e+00, 2.009e+01, 5.460e+01, 1.484e+02, 4.034e+02,
       1.097e+03, 2.981e+03, 8.103e+03, 2.203e+04])

小数点以下3桁となりました。ここで1.484e+02というのは、$1.484e×10^2$となりe+02とは10の2乗の100倍することいい、148.4となります。ですから漠然と見ていると数字の大小がよくわかりません。そこで、単純な桁数にするためにさらにset_printoptions関数を使います。

#3 NumPyモジュールでsuppressをTrueにして見やすくする
np.set_printoptions(precision=3,suppress=True)
array = np.arange(1,11)
expon=np.exp(array)
expon
array([    2.718,     7.389,    20.086,    54.598,   148.413,   403.429,
        1096.633,  2980.958,  8103.084, 22026.466])

上の通り、わかりやすくなります。suppressとは抑制するという意味で、小数点以下の表示を丸めるという意味合いになります。

#4 NumPyモジュールの数値の表示の仕方を確認する
np.get_printoptions()
{'edgeitems': 3,
 'threshold': 1000,
 'floatmode': 'maxprec',
 'precision': 3,
 'suppress': True,
 'linewidth': 75,
 'nanstr': 'nan',
 'infstr': 'inf',
 'sign': '-',
 'formatter': None,
 'legacy': False}

たくさん設定項目があります。set_printoptionsはJupyterNotebookを閉じると設定はクリアされますが、次の通りすべての設定をdefaultにするとリセットされます。

#5 NumPyモジュールの数値の表示の仕方をリセットする
np.set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, suppress=None, nanstr=None, infstr=None, formatter=None, sign=None, floatmode=None,  legacy=None)

この記事を書いた人

目次
閉じる