Добавление новой переменной в файл.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, поэтому я полагаю, что он появится в следующих версиях.

Другие вопросы по тегам