12

結果を指数表記 (例: 1.2e3) で示したいと思います。私のデータは配列形式です。tolist()%E を使用して出力をフォーマットできるように、配列を float に変換できるような関数はありますか?

これが私のコードです:

import numpy as np
a=np.zeros(shape=(5,5), dtype=float)
b=a.tolist()
print a, type(a), b, type(b)
print '''%s''' % b 
# what I want is 
print '''%E''' % function_to_float(a or b)
4

2 に答える 2

13

formatterNumpy のバージョンが 1.7 以降の場合は、オプションを使用できるはずですnumpy.set_printoptions1.6 は確実に動作するはずです -- 1.5.1 も同様に動作する可能性があります。

import numpy as np
a = np.zeros(shape=(5, 5), dtype=float)
np.set_printoptions(formatter={'float': lambda x: format(x, '6.3E')})
print a

または、 がない場合はformatter、値が必要な形式の書式設定された文字列である新しい配列を作成できます。これにより、元の配列と同じ大きさのまったく新しい配列が作成されるため、これを行う最もメモリ効率の高い方法ではありませんが、numpy をアップグレードできない場合は機能する可能性があります。(これをテストしたところ、numpy 1.3.0 で動作します。)

この戦略を使用して上記のようなものを取得するには:

import numpy as np
a = np.zeros(shape=(5, 5), dtype=float)
formatting_function = np.vectorize(lambda f: format(f, '6.3E'))
print formatting_function(a)

'6.3E'各値を出力する形式です。その他のオプション については、このドキュメントを参照してください。

この場合、6は印刷される数値の最小幅で、3は小数点以下に表示される桁数です。

于 2012-07-26T22:31:27.917 に答える
3

配列の各要素を指数表記で書式設定し、必要に応じて表示できます。リストはフロートに変換できません。リストの中にフロートが含まれている可能性があります。

import numpy as np
a = np.zeroes(shape=(5, 5), dtype=float)
for e in a.flat:
    print "%E" % e

また

print ["%E" % e for e in a.flat]
于 2012-07-26T21:31:56.947 に答える