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