【NumPy】表示形式の設定

当サイトではアフィリエイトプログラムを利用して商品を紹介しています。

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)
# [□ ∞]

コメント

  1. HNaito より:

    下記は誤植と思われますので、ご確認ください。
    OPTIONS_06 プログラムのコメントで、文字数を6に → 文字数を7に
    OPTIONS_06 プログラムで、(linewidth=7) → (threshold=12, linewidth=7)
    ※OPTIONS_04-2 プログラムの実行後では、threshold=10となっているため再設定必要