numpy.get_printoptions()
numpy.get_printoptions() は現在設定されている配列の表示形式を取得します。
デフォルトでは以下のような設定になっているはずです。
# GET_PRINT_OPTIONS
# In[1]
import numpy as np
# 配列の表示形式を取得
np.get_printoptions()
'''
{'edgeitems': 3,
'threshold': 1000,
'floatmode': 'maxprec',
'precision': 8,
'suppress': False,
'linewidth': 75,
'nanstr': 'nan',
'infstr': 'inf',
'sign': '-',
'formatter': None,
'legacy': False}
'''
この設定は numpy.set_printoptions() を使って変更できます。
各項目の意味については以下の節で説明します。
numpy.set_printoptions()
numpy.set_printoptions() は配列の表示形式を設定します。浮動小数点数を指定の桁で丸めたり、大きな配列を要約表示することできます。この関数が設定するのは、あくまで表示形式 (見た目) であって、配列の中身を変更するわけではありません。
precision
precision で浮動小数点数の小数点以下の表示桁数を指定します。
# SET_PRINT_OPTIONS_PRECISION
# In[1]
import numpy as np
arr = np.array([1.23, 1.2345, 1.234567])
# 小数点以下3桁まで表示
np.set_printoptions(precision=3)
print(arr)
# [1.23 1.234 1.235]
指定するのは有効数字の桁数ではなく、小数点以下の桁数であることに注意してください。
floatmode
floatmode は浮動小数点数の表示形式を設定します。
precision=n が設定されているとします。
floatmode に "maxprec" を渡すと、各要素を小数点以下最大 n 桁で表示し、n 桁に満たない数字はそのまま表示されます。
# SET_PRINT_OPTIONS_FLOATMODE
# In[1]
import numpy as np
arr = np.array([1.23, 1.2345, 1.234567])
# 要素を小数点以下最大5桁で表示
# 5桁に満たない数字はそのまま表示
np.set_printoptions(precision=5, floatmode="maxprec")
print(arr)
# [1.23 1.2345 1.23457]
floatmode に "fixed" を指定すると、各要素を小数点以下最大 n 桁で表示し、n 桁に満たない数字は 0 で埋めて桁を揃えます。
# In[2]
arr = np.array([1.23, 1.2345, 1.234567])
# 要素を小数点以下5桁で表示
# 5桁に満たない数字は0で埋めて桁を揃える
np.set_printoptions(precision=5, floatmode="fixed")
print(arr)
# [1.23000 1.23450 1.23457]
suppress
デフォルト設定 (suppress=False) では、0.0001 より小さな値は指数表記となります。
# SET_PRINT_OPTIONS_SUPPRESS
# In[1]
import numpy as np
# デフォルト(suppress=False)では1e-4より小さい数値は指数表記
np.set_printoptions(precision=8, suppress=False)
a = np.array([0.0001])
b = np.array([0.00009])
print(a, b)
# [0.0001] [9.e-05]
suppress=True に設定すると、常に小数表記となります。
# In[2]
# suppress=Trueに設定すると常に小数表記
np.set_printoptions(precision=8, suppress=True)
print(a, b)
# [0.0001] [0.00009]
threshold
threshold で省略表示しない配列の軸に沿った最大要素数 (閾値) を指定します。たとえば、threshold=10 と指定した場合、10 個の要素をもつ 1 次元配列は省略されませんが、11 個を超える要素をもつ 1 次元配列は省略して表示されます。
# SET_PRINT_OPTIONS_THRESHOLD
# In[1]
import numpy as np
# 最大10要素の配列まではフルで表示
# 11要素を超える配列は省略表示
np.set_printoptions(threshold=10)
a = np.arange(10)
b = np.arange(11)
print(a)
print(b)
# [0 1 2 3 4 5 6 7 8 9]
# [ 0 1 2 ... 8 9 10]
2 次元配列の場合、全要素数ではなく軸に沿った要素数が基準となります。
# In[2]
np.set_printoptions(threshold=10)
c = np.arange(36).reshape(6, 6)
d = np.arange(36).reshape(3, 12)
print(c)
print(d)
'''
[[ 0 1 2 3 4 5]
[ 6 7 8 9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]
[24 25 26 27 28 29]
[30 31 32 33 34 35]]
[[ 0 1 2 ... 9 10 11]
[12 13 14 ... 21 22 23]
[24 25 26 ... 33 34 35]]
'''
edgeitems
edgeitems は配列を省略表示するときの先頭と末尾に表示する要素数です。
# SET_PRINT_OPTIONS_EDGEITEMS
# In[1]
import numpy as np
# 省略表示したとき、先頭と末尾に2個の要素を表示する
np.set_printoptions(threshold=10, edgeitems=2)
arr = np.arange(11)
print(arr)
# [ 0 1 ... 9 10]
linewidth
linewidth は一行に表示する文字数です。
# SET_PRINT_OPTIONS_LINEWIDTH
# In[1]
import numpy as np
# 1行に表示する文字数を7に設定
np.set_printoptions(threshold=12, linewidth=7)
arr = np.arange(12)
print(arr)
'''
[ 0 1
2 3
4 5
6 7
8 9
10 11]
'''
nanstr, infstr
nanstr で非数 (np.nan) の表記、infstr で無限大 (np.inf) の表記を指定できます。
# SET_PRINT_OPTIONS_NANSTR_INFSTR
# In[1]
import numpy as np
# 非数(np.nan)を"□",無限大(np.inf)を"∞"で表示
np.set_printoptions(nanstr="□", infstr="∞")
arr = np.array([np.nan, np.inf])
print(arr)
# [□ ∞]
下記は誤植と思われますので、ご確認ください。
OPTIONS_06 プログラムのコメントで、文字数を6に → 文字数を7に
OPTIONS_06 プログラムで、(linewidth=7) → (threshold=12, linewidth=7)
※OPTIONS_04-2 プログラムの実行後では、threshold=10となっているため再設定必要
訂正しました。
ありがとうございます m(_ _)m