0

我正在提取一个使用 R 和 Python 生成的大型 CSV 文件(200Mb)(我是使用 Python 的那个)。

我对文件进行了一些处理(标准化、缩放、删除垃圾列等),然后使用 numpy 的 savetxt 将其再次保存,数据分隔符为“,”以保留 csv 属性。

问题是,新文件几乎是原始文件的两倍(几乎 400Mb)。原始数据和新数据只是浮点数组。

如果有帮助,看起来新文件的值非常小,需要指数值,而原始文件没有。

知道为什么会这样吗?

4

1 回答 1

2

您是否看过前后浮动在文本中的表示方式?您可能有一行“1.,2.,3”。变为 "1.000000e+0, 2.000000e+0,3.000000e+0" 或类似的东西,两者都是有效的并且都代表相同的数字。

然而,更有可能的是,如果原始文件包含作为有效数字相对较少的值的浮点数(例如“1.1、2.2、3.3”),那么在您进行标准化和缩放之后,您“创建”更多需要表示的数字您的数学结果但不对应于精度的实际增加(例如,在上一个示例中将值的总和标准化为 1.0 给出“0.1666666, 0.3333333, 0.5”)。

我想简短的回答是,不能保证(也没有要求)表示为文本的浮点数占用任何特定数量的存储空间,或者小于每个浮点数可能的最大值;即使数据保持不变,它也会有很大的不同,如果数据发生变化,它肯定会有所不同。

于 2012-11-21T11:07:30.663 回答