sam*_*fer 4 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=',')
Run Code Online (Sandbox Code Playgroud)
我希望该文件大约10,000*10,000*4字节(400 MB).(这也是test.nbytes回报).但是,该文件大2.3 GB.是否有大文件大小的原因?我查看了numpy文档,在写入文件时似乎没有办法指定变量类型.我尝试了其他文件类型/分隔符,但得到了相同的结果.
本机数据类型的大小与数据类型的字符串表示形式的大小不同.
numpy.savetxt有一个fmt默认的参数'%.18e',它将每个零格式化为0.000000000000000000e+00.这是每个项目24个字符加上一个分隔符.
要获得较小的文件,您可以更改格式(注意丢失有效数字)或使用numpy.save二进制numpy.savez保存或保存为压缩存档.