numpy.savetxt()输出非常大的文件

时间:2014-10-09 17:37:29

标签: python arrays file-io numpy

我正在使用numpy.savetxt()将一个numpy数组写入csv文件,但生成的文件非常大。例如,如果我创建一个零数组:

import numpy

test = numpy.zeros((10000,10000), dtype=numpy.float32)
numpy.savetxt('C:/datatest.csv',test,delimiter=',')

我希望文件大约10,000 * 10,000 * 4字节(400 MB)。 (这也是test.nbytes返回的内容)。但是,该文件大2.3 GB。是否有大文件大小的原因?我查看了numpy文档,在写入文件时似乎没有办法指定变量类型。我尝试了其他文件类型/分隔符,但得到了相同的结果。

1 个答案:

答案 0 :(得分:6)

本机数据类型的大小与数据类型的字符串表示形式的大小不同。

numpy.savetxt有一个fmt参数,默认为'%.18e',它将每个零格式化为0.000000000000000000e+00。这是每个项目24个字符加上一个分隔符。

要获取较小的文件,您可以更改格式(注意丢失有效数字)或使用numpy.save保存为二进制文件或numpy.savez以保存为压缩存档。