繁体   English   中英

使用Python包hdf5storage将新变量添加到.mat文件

[英]Adding a new variable to a .mat file using the Python package hdf5storage

是否可以使用Python软件包hdf5storage将新变量添加到.mat文件(v7.3)中?


例:

我在Matlab中写道:

test = {'Hello', 'world!'; 'Good', 'morning'; 'See', 'you!'};
save('data.mat', 'test', '-v7.3') % v7.3 so that it is readable by h5py

在此处输入图片说明

在Python中,我想向data.mat添加一个新变量。 我该怎么做才能达到以下目的:

在此处输入图片说明

我试过了:

import hdf5storage # get code on https://pypi.python.org/pypi/hdf5storage/0.1.3
import numpy as np

matcontent = {}
matcontent[u'some_numbers'] = np.array([10, 50, 20]) # each key must be a unicode string
hdf5storage.write(matcontent, '.', 'data.mat', matlab_compatible=True)

但它会覆盖data.mat而不是添加新变量。

您正在创建新数据,然后将新数据写入文件。 那会覆盖文件。 您需要加载原始.mat文件,追加到该文件,然后再次保存。

import hdf5storage
import numpy as np

matcontent = hdf5storage.loadmat('data.mat')
matcontent[u'some_numbers'] = np.array([10, 50, 20])
hdf5storage.savemat('data.mat', matcontent)

然后在Matlab中

>> whos -file data.mat
      Name              Size            Bytes  Class    Attributes

      some_numbers      1x3                24  int64              
      test              3x2               730  cell   

到目前为止,我知道这是不可能的。 TheBlackCat提供的答案实际上并不适用,因为您正在重写文件。 我倾向于拥有非常大的matlab文件,通常我不会完全读取它们,而是有选择地读取或写入。 这是.mat文件中使用的基础HDF5格式的最大优点(以及引用)。 python软件包hdf5storage仍然是0.xx版本,因此我想它将在将来的版本中出现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM