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)