Добавление новой переменной в файл.mat с помощью пакета Python hdf5storage
Можно ли добавить новую переменную в файл.mat (v7.3) с помощью пакета Python hdf5storage?
Пример:
Я написал в 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
вместо добавления новой переменной.
2 ответа
Вы создаете новые данные, а затем записываете эти новые данные в файл. Это переписывает файл. Вам нужно загрузить оригинал .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)
Потом в матлаб
>> whos -file data.mat
Name Size Bytes Class Attributes
some_numbers 1x3 24 int64
test 3x2 730 cell
Пока я знаю, что это невозможно. Ответ, предоставленный TheBlackCat, на самом деле не применим, поскольку вы переписываете свой файл. Я склонен иметь действительно большие файлы Matlab, которые я обычно не хочу читать полностью, а вместо этого читать или писать выборочно. Это большое преимущество (вместе со ссылками) основного формата HDF5, используемого в файлах.mat. Пакет python hdf5storage по-прежнему находится в версии 0.xx, поэтому я полагаю, что он появится в следующих версиях.