假设我从Matlab生成了以下玩具数据集,并将其保存为mat文件:
>> arr = rand(100);
>> whos arr
Name Size Bytes Class Attributes
arr 100x100 80000 double
>> save('arr.mat', 'arr')
根据ls
命令的输出,保存的arr.mat
文件大小为75829字节
。
如果我使用scipy.io.loadmat()
加载相同的文件并使用scipy.io.savemat()
重新保存:
arr = io.loadmat('arr.mat')
with open('arrscipy.mat', 'w') as f:
io.savemat(f, arr)
我得到了一个大小相差较大的文件(大约比原来多4KB):
$ ls -al
75829 Nov 6 11:52 arr.mat
80184 Nov 6 11:52 arrscipy.mat
我现在有两个包含相同数据的二进制mat文件。我的理解是,二进制mat文件的大小取决于其包含变量的大小,再加上由于文件头而产生的一些开销。然而这两个文件的大小差异很大。为什么会这样?这是数据格式问题吗? 我也尝试了使用结构体数组,结果类似:用scipy保存的mat文件比用Matlab保存的文件更大。
do_compression=True
保存的scipy mat文件比使用Matlabsave('arr.mat', 'arr')
保存的文件要小:scipy的大小为75602字节
,而Matlab的大小为75829字节
。你有什么想法可以解释这是如何发生的吗? - JoErNanO