NumPy配列を科学的記数法なしで指定された精度できれいに印刷する 質問する

NumPy配列を科学的記数法なしで指定された精度できれいに印刷する 質問する

次のようにフォーマットされた 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_printoptionsformatter各タイプのフォーマット関数を指定できるパラメータが追加されました。

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]

おすすめ記事