How to append to .mat file using scipy.io.savemat?

后端 未结 3 1084
一个人的身影
一个人的身影 2020-12-10 15:49

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 i

3条回答
  •  眼角桃花
    2020-12-10 16:20

    According to savemat docs:

    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__'])
    

    Or the full description:

    {'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'}
    

    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.

提交回复
热议问题