如何使用scipy.io.savemat附加到.mat文件? [英] How to append to .mat file using scipy.io.savemat?

查看:814
本文介绍了如何使用scipy.io.savemat附加到.mat文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,当我使用savemat命令时,它往往会覆盖文件.有没有可能附加而不是覆盖的方法?我知道一种解决方法是将所有内容放入列表,然后将其转换为字典.这对我不起作用,因为我正在尝试提高RAM效率.在进行在线搜索时,我发现了如何使用scipy.io.savemat()覆盖.mat文件?

so when I use the savemat command it tends to overwrite the file. Is there a possible way to append instead of overwriting? I know a work-around would be to put everything into a list, and then convert it to a dictionary. That won't work for me because I am trying to be RAM efficient. Doing online search I found this How NOT to overwrite the .mat file when using scipy.io.savemat()?

也不起作用,因为它涉及到在内存中提取一个数据文件以将其附加到每个循环中,从速度角度来看,这似乎是愚蠢的.

that won't work either because it involves pulling a data file in your ram memory to append it every single loop, which seems stupid from the speed perspective.

我考虑过将其附加到一个numpy二进制文件中,然后将其拉入并保存到.mat文件中吗?我不确定这是否会比第一种选择的RAM效率更高.

I thought about appending to a numpy binary file, then pulling that in and saving it to a .mat file? I am not sure if this would be more RAM efficient than the first option though.

谢谢!

推荐答案

根据savemat文档:

file_name:str或类似文件的对象

file_name : str or file-like object

因此您可以以附加模式打开文件,然后进行写操作,例如

So you can open the file in append mode, and write, e.g.

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问题.

A note in https://github.com/scipy/scipy/blob/master/scipy/io/matlab/mio5.py#L34 suggests that there is a problem with appending when there's a function in the data file, but this indicates that appending isn't a problem if we are just saving arrays. But maybe further search of the scipy issues is in order.

这篇关于如何使用scipy.io.savemat附加到.mat文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆