【发布时间】:2016-02-07 12:26:59
【问题描述】:
假设我从 Matlab 生成以下玩具数据集,并将其保存为 mat 文件:
>> arr = rand(100);
>> whos arr
Name Size Bytes Class Attributes
arr 100x100 80000 double
>> save('arr.mat', 'arr')
根据ls 命令的输出,保存的arr.mat 文件大小为75829 Bytes。
如果我使用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 文件的大小取决于其包含的变量的大小,加上文件头的一些开销。但是这两个文件的大小有很大的不同。为什么是这样? Is it a data format problem?
我也对结构数组进行了尝试,结果相似:scipy 保存的 mat 文件比 Matlab 保存的文件大。
【问题讨论】: