我正在提取一个使用R和Python生成的大型CSV文件(200Mb)(我是使用python的那个)。
我对文件进行了一些修改(规范化,缩放,删除垃圾列等),然后使用numpy的savetxt再次保存它,数据分隔符为','以保存csv属性。
事情是,新文件几乎是原始文件的两倍(几乎400Mb)。原始数据和新数据只是浮点数组。
如果有帮助,看起来好像新文件的值很小,需要指数值,而原始版本没有。
有关为什么会发生这种情况的任何想法?
答案 0 :(得分:2)
您是否看过浮动在前后文本中的表示方式?你可能有一行“1.,2.,3”。成为“1.000000e + 0,2000000e + 0,3.000000e + 0”之类的东西,这两个都是有效的,都代表相同的数字。
然而,更有可能的是,如果原始文件包含浮动为具有相对较少有效数字的值(例如“1.1,2.2,3.3”),则在进行规范化和缩放后,您将“创建”更多数字,需要表示数学结果,但不能与精确度的实际增加相对应(例如,在最后一个示例中将值的总和归一化为1.0会给出“0.1666666,0.3333333,0.5”)。
我想简短的回答是,对于表示为文本的浮点数,无法保证(并且没有要求)占用任何特定数量的存储空间,或者小于每次浮点数的最大值;即使数据保持不变,它也会变化很大,如果数据发生变化,肯定会有所不同。