次のようにフォーマットされた NumPy 配列を印刷するにはどうすればよいでしょうか。
x = 1.23456
print('%.3f' % x)
浮動小数点数のを印刷する場合numpy.ndarray
、いくつかの小数点が印刷されますが、多くの場合は「科学的」形式で、低次元配列であっても読みにくいです。ただし、 はnumpy.ndarray
文字列として、つまり として印刷する必要があるようです%s
。これに対する解決策はありますか?
ベストアンサー1
使用numpy.set_printoptions
出力の精度を設定するには:
import numpy as np
x = np.random.random(10)
print(x)
# [ 0.07837821 0.48002108 0.41274116 0.82993414 0.77610352 0.1023732
# 0.51303098 0.4617183 0.33487207 0.71162095]
np.set_printoptions(precision=3)
print(x)
# [ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]
また、suppress
小さい数値については科学的記数法の使用を抑制します。
y = np.array([1.5e-10, 1.5, 1500])
print(y)
# [ 1.500e-10 1.500e+00 1.500e+03]
np.set_printoptions(suppress=True)
print(y)
# [ 0. 1.5 1500. ]
NumPy 1.15.0以降を使用して印刷オプションをローカルに適用するには、numpy.printoptions
コンテキスト マネージャー。たとえば、with-suite
precision=3
および内では次のようにsuppress=True
設定されます。
x = np.random.random(10)
with np.printoptions(precision=3, suppress=True):
print(x)
# [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]
ただし、with-suite
印刷オプションはデフォルト設定に戻ります。
print(x)
# [ 0.07334334 0.46132615 0.68935231 0.75379645 0.62424021 0.90115836
# 0.04879837 0.58207504 0.55694118 0.34768638]
以前のバージョンのNumPyを使用している場合は、コンテキストマネージャを自分で作成できます。たとえば、
import numpy as np
import contextlib
@contextlib.contextmanager
def printoptions(*args, **kwargs):
original = np.get_printoptions()
np.set_printoptions(*args, **kwargs)
try:
yield
finally:
np.set_printoptions(**original)
x = np.random.random(10)
with printoptions(precision=3, suppress=True):
print(x)
# [ 0.073 0.461 0.689 0.754 0.624 0.901 0.049 0.582 0.557 0.348]
浮動小数点数の末尾からゼロが削除されないようにするには:
np.set_printoptions
formatter
各タイプのフォーマット関数を指定できるパラメータが追加されました。
np.set_printoptions(formatter={'float': '{: 0.3f}'.format})
print(x)
印刷する
[ 0.078 0.480 0.413 0.830 0.776 0.102 0.513 0.462 0.335 0.712]
の代わりに
[ 0.078 0.48 0.413 0.83 0.776 0.102 0.513 0.462 0.335 0.712]