[NumPy] 表示形式の設定

[NumPy] 表示形式の設定

numpy.get_printoptions()

 numpy.get_printoptions() は現在設定されている配列の表示形式を取得します。
 デフォルトでは以下のような設定になっているはずです。

#NGP

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 で浮動小数点数の小数点以下の表示桁数を指定します。

# NSP_01

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 桁に満たない数字はそのまま表示されます。

# NSP_02-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 で埋めて桁を揃えます。

# NSP_02-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 より小さな値は指数表記となります。

# NSP_03-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 に設定すると、常に小数表記となります。

# NSP_03-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 次元配列は省略して表示されます。

# NSP_04-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 次元配列の場合、全要素数ではなく軸に沿った要素数が基準となります。

# NSP_04-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 は配列を省略表示するときの先頭と末尾に表示する要素数です。

# NSP_05

import numpy as np

# 省略表示したとき、先頭と末尾に2個の要素を表示する
np.set_printoptions(threshold=10, edgeitems=2)

arr = np.arange(11)

print(arr)
[ 0  1 ...  9 10]

 

linewidth

 linewidth は一行に表示する文字数です。

# NSP_06

import numpy as np

# 1行に表示する文字数を6に設定
np.set_printoptions(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) の表記を指定できます。

# NSP_07

import numpy as np

# 非数(np.nan)を"□",無限大(np.inf)を"∞"で表示
np.set_printoptions(nanstr="□", infstr="∞")

arr = np.array([np.nan, np.inf])

print(arr)
[□ ∞]