我正在使用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文档,在写入文件时似乎没有办法指定变量类型。我尝试了其他文件类型/分隔符,但得到了相同的结果。
答案 0 :(得分:6)
本机数据类型的大小与数据类型的字符串表示形式的大小不同。
numpy.savetxt
有一个fmt
参数,默认为'%.18e'
,它将每个零格式化为0.000000000000000000e+00
。这是每个项目24个字符加上一个分隔符。
要获取较小的文件,您可以更改格式(注意丢失有效数字)或使用numpy.save
保存为二进制文件或numpy.savez
以保存为压缩存档。