再び三角関数の値を表示します.すると,小数点以下は8桁まで表示されていることがわかります.
import numpy as np
x = np.array([0, np.pi/3, np.pi/2, 2*np.pi/3, np.pi])
print(x)
print(np.sin(x))
print(np.cos(x))
print(np.tan(x))
[0. 1.04719755 1.57079633 2.0943951 3.14159265] [0.00000000e+00 8.66025404e-01 1.00000000e+00 8.66025404e-01 1.22464680e-16] [ 1.000000e+00 5.000000e-01 6.123234e-17 -5.000000e-01 -1.000000e+00] [ 0.00000000e+00 1.73205081e+00 1.63312394e+16 -1.73205081e+00 -1.22464680e-16]
NumPy では np.get_printoptions()
で表示オプションの設定を確認することができます.その結果,'precision': 8
という設定を確認することができました.
print(np.get_printoptions())
{'edgeitems': 3, 'threshold': 1000, 'floatmode': 'maxprec', 'precision': 8, 'suppress': False, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False}
この設定を set_printoptions()
によって3に変更することで,小数点以下の表示桁数を3桁に設定できます.
np.set_printoptions(precision=3)
print(x)
print(np.sin(x))
print(np.cos(x))
print(np.tan(x))
[0. 1.047 1.571 2.094 3.142] [0.000e+00 8.660e-01 1.000e+00 8.660e-01 1.225e-16] [ 1.000e+00 5.000e-01 6.123e-17 -5.000e-01 -1.000e+00] [ 0.000e+00 1.732e+00 1.633e+16 -1.732e+00 -1.225e-16]
次に,小数点以下をゼロで埋めるように設定します.このためには,floatmode='fixed'
を指定するとよいでしょう.
np.set_printoptions(floatmode='fixed')
print(x)
print(np.sin(x))
print(np.cos(x))
print(np.tan(x))
[0.000 1.047 1.571 2.094 3.142]
[0.000e+00 8.660e-01 1.000e+00 8.660e-01 1.225e-16]
[ 1.000e+00 5.000e-01 6.123e-17 -5.000e-01 -1.000e+00]
[ 0.000e+00 1.732e+00 1.633e+16 -1.732e+00 -1.225e-16]
次は,指数表示を極力利用せず,例えば 1.225e-16
のようなゼロに近い数字が 0.000
と表示されるようにします.ただし,1.633e+16
のような非常に桁の大きな値がある場合には指数表示のままになるようです.
np.set_printoptions(suppress=True)
print(x)
print(np.sin(x))
print(np.cos(x))
print(np.tan(x))
[0.000 1.047 1.571 2.094 3.142] [0.000 0.866 1.000 0.866 0.000] [ 1.000 0.500 0.000 -0.500 -1.000] [ 0.000e+00 1.732e+00 1.633e+16 -1.732e+00 -1.225e-16]
最後に配列を表示します.NumPy 配列は最大1000個までは途中を省略せずに表示されます.
z = np.arange(20)
print(z)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
例えば,最大15個までは省略せずに表示して,16個以上では途中を省略するように設定を変更します.20個の配列は途中が省略されました.
np.set_printoptions(threshold=15)
print(z)
[ 0 1 2 ... 17 18 19]
15個の配列では省略されずにすべてが表示されました.
z = np.arange(15)
print(z)
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
16個になれば途中が省略されることも確認できました.
z = np.arange(16)
print(z)
[ 0 1 2 ... 13 14 15]
このページでいくつかの設定を変更したので,その結果を確認しておきます.最初の結果と見比べてください.
print(np.get_printoptions())
{'edgeitems': 3, 'threshold': 15, 'floatmode': 'fixed', 'precision': 3, 'suppress': True, 'linewidth': 75, 'nanstr': 'nan', 'infstr': 'inf', 'sign': '-', 'formatter': None, 'legacy': False}