1. ホーム
  2. python

[解決済み] フロートの印刷が簡単にきれいにできる?

2022-09-26 11:55:51

質問

浮動小数点数のリストを持っています。もし私が単に print とすると、このように表示されます。

[9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]

私は print "%.2f" を使うこともできますが、その場合は for ループが必要ですが、それではもっと複雑なデータ構造には使えません。 私は次のようなものを望んでいます(これは完全に作り話です)。

>>> import print_options
>>> print_options.set_float_precision(2)
>>> print [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
[9.0, 0.05, 0.03, 0.01, 0.06, 0.08]

どのように解決するのですか?

古い質問ですが、役に立つかもしれないことを追加しておきます。

あなたがPythonの生のリストで例を書いたことは知っていますが、もしあなたが numpy 配列を使うことにした場合 (あなたの例では数値の配列を扱っているようなので、これは完全に合法でしょう)、あなたが作ったと言ったこのコマンドがあります (ほぼ正確に)。

import numpy as np
np.set_printoptions(precision=2)

あるいは、より良い方法として、本当に正確な数値のすべての小数点を表示したいが、例えば末尾のゼロを取り除きたい場合、フォーマット文字列である %g :

np.set_printoptions(formatter={"float_kind": lambda x: "%g" % x})

一度だけ印刷し、グローバルな挙動を変更しない場合は np.array2string を、上記と同じ引数で使用します。