私はこの質問に対する答えを見つけることができなかったのに驚いています。私は浮動小数点値をhdf5データセットに書いています。精度を10小数点に設定したいと思います。 hdf5データセットのdocumentationから、精度を設定する方法はありません。私が得た最も近いものは 'float32'か 'float64'ですが、 'float32'は私の数を減らしています。ファイルサイズは私の大きな懸念事項であり、 'float64'の不要な数字はファイルを大幅に大きくします。 hdf5で精度を選ぶことは可能ですか?hdf5データセットの浮動小数点精度を設定する
私の問題の例:あるデータの真の値が[0] 0.0066896507
group.create_dataset(name, data=data, dtype='float64')
[0] 0.0066896506999999999が得られたデータが、
group.create_dataset(name, data=data, dtype='float32')
ている私に0.0066896505を与える、と 間違っている。データセット内の他の数字はさらに間違っています。
私は
x = h5py.File(my_file,'r')
print(x['dataset'][0])
を行うとき、それは私に正しい番号を与えるので、それは、また奇妙です。しかし、コンソールにx['dataset'][0]
と入力するだけで、私が上記で書いたことが得られます。データは実際どのように保存されていますか?それは本当に余分な数字を与えていますか?ご覧のとおり、私はhdf5(そして一般的にはPython)に少し慣れています。助けてくれてありがとう。
'float32'と' float64'は、ほとんどのコンパイラの標準フロート型です( 'c'コンパイラの' float'と 'double')。それらは、1つの番号につき4バイトと8バイトを使用します。プロセッサとコンパイラは、これらのサイズで効率的に動作するように設計されています。 6バイト(またはそれより悪い5または7)を使用しようとすると、メモリ使用量を大幅に削減することなく効率が大幅に低下します。 – hpaulj
このhdf5ファイルを他の人に送信した場合、数字が10以上の精度で表示されますか? –
これはストレージの問題ではなく、印刷精度の問題である可能性があります。 – hpaulj