0

R with Pythonを使用して生成された大きなCSVファイル(200Mb)を抽出しています(私はPythonを使用しています)。

ファイルをいじくり回して(正規化、スケーリング、ジャンク列の削除など)、データ区切り文字を「、」としてnumpyのsavetxtを使用して再度保存し、csvプロパティをキーします。

つまり、新しいファイルは元のファイルのほぼ2倍の大きさです(ほぼ400Mb)。元のデータと新しいデータは、floatの配列のみです。

それが役立つ場合は、新しいファイルの値が非常に小さく、元のファイルにはなかった指数値が必要であるように見えます。

なぜこれが起こっているのかについて何か考えはありますか?

4

1 に答える 1

2

フロートが前後のテキストでどのように表現されるかを見たことがありますか?「1.、2.、3」という行があるかもしれません。「1.000000e+0、2.000000e + 0,3.000000e + 0」などになると、2つは両方とも有効で、両方とも同じ番号を表します。

ただし、元のファイルに有効数字が比較的少ない値(たとえば、「1.1、2.2、3.3」)としてfloatが含まれている場合は、正規化とスケーリングを行った後、表現するために必要な桁をさらに「作成」する可能性があります。計算の結果ですが、実際の精度の向上には対応していません(たとえば、最後の例で値の合計を1.0に正規化すると、「0.1666666、0.3333333,0.5」になります)。

簡単に言えば、テキストとして表されるフロートが特定のストレージスペースを占める、またはフロートごとに可能な最大数よりも少ないという保証はない(そして要件はない)ということだと思います。データが同じであっても大きく変化する可能性があり、データが変化すると確実に変化します。

于 2012-11-21T11:07:30.663 に答える