因此,当我使用savemat命令时,它往往会覆盖文件。有没有可能附加而不是覆盖的方法?我知道一种解决方法是将所有内容放入列表,然后将其转换为字典。那对我不起作用,因为我正在尝试提高RAM效率。在进行在线搜索时,我发现了如何在使用scipy.io.savemat()时不覆盖.mat文件?
这也不起作用,因为它涉及到在ram内存中提取数据文件以将其附加到每个循环中,从速度的角度来看这似乎是愚蠢的。
我考虑过将其附加到一个numpy二进制文件,然后将其拉入并将其保存到.mat文件吗?我不确定这是否会比第一个选项更有效。
谢谢!
根据savemat
文档:
file_name:str或类似文件的对象
因此,您可以在追加模式下打开文件并进行写入,例如
io.savemat('temp.mat',{'data':np.ones(10)}) # write
with open('temp.mat','ab') as f:
io.savemat(f, {'newdata':np.arange(5)}) # append
print io.loadmat('temp.mat').keys() # read
# dict_keys(['data', '__globals__', 'newdata', '__header__', '__version__'])
或完整说明:
{'data': array([[ 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]),
'__globals__': [],
'newdata': array([[0, 1, 2, 3, 4]]),
'__header__': b'MATLAB 5.0 MAT-file Platform: posix, Created on: Fri Mar 13 14:14:33 2015',
'__version__': '1.0'}
https://github.com/scipy/scipy/blob/master/scipy/io/matlab/mio5.py#L34中的一条注释表明,当数据文件中有功能时,附加会出现问题,但这表明如果我们只是保存数组,那么追加问题就不成问题了。但是也许可以对scipy
问题进行进一步的搜索。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句