我有一个文本文件,每行包含4096个浮点数,总共123287行,我将它转换为.mat文件。
查看具有相同数据量的其他文件,并且我的计算得出结果mat文件应该小于1GB,而得到的带有以下代码的mat文件导致3.8 GB。什么可能出错?
import scipy.io
import numpy as np
add = np.zeros(shape=(4096,123287))
i=0
for l in open('data.txt','r'):
l=l.split()
j=0
for e in l:
try:
add[j][i]=np.float32(e)
j+=1
except IndexError:
continue
i+=1
scipy.io.savemat('data.mat',{'feats':add})
答案 0 :(得分:2)
matlab中用于处理非整数的默认类型是double,占用8个字节。
在数组中,您有504983552个元素(4096 * 123287 = 504983552)。以字节为单位:504983552 * 8 = 4039868416,即4039.86 mb。
如果将数据类型转换为单个而不是double,则可以将此值减半。