Создание.mat файла v7.3 в python
Мне нужно выполнить умножение с использованием матрицы 60000X70000 в Python или Matlab. У меня 16 ГБ ОЗУ, и я могу легко загрузить каждую строку матрицы (что мне и нужно). Я могу создать матрицу в целом в Python, но не в Matlab. В любом случае я могу сохранить массив как.mat файл v7.3, используя h5py или scipy, чтобы я мог загрузить каждую строку отдельно?
1 ответ
Для MATLAB v7.3 вы можете использовать hdf5storage
что требует h5py
, скачайте файл здесь, распакуйте и введите: python setup.py install
из командной строки. https://pypi.python.org/pypi/hdf5storage
import h5py
import hdf5storage
import numpy as np
matfiledata = {} # make a dictionary to store the MAT data in
matfiledata[u'variable1'] = np.zeros(100) # *** u prefix for variable name = unicode format, no issues thru Python 3.5; advise keeping u prefix indicator format based on feedback despite docs ***
matfiledata[u'variable2'] = np.ones(300)
hdf5storage.write(matfiledata, '.', 'example.mat', matlab_compatible=True)
Если MATLAB не может загрузить все сразу, я думаю, вам придется сохранить его в разных переменных matfiledata[u'chunk1'] matfiledata[u'chunk2'] matfiledata[u'chunk3']
и т.п.
Затем в MATLAB, если вы сохраните каждый чанк как переменную
load(filename,'chunk1')
do stuff...
clear chunk1
load(filename,'chunk2')
do stuff...
clear chunk2
и т.п.
В hdf5storage.savemat есть параметр, позволяющий правильно читать файл в Python в будущем, поэтому его стоит проверить, и он следует формату scipy.io.loadmat... хотя вы можете сделать что-то подобное, если сохраните данные из MATLAB в упростить импорт обратно в Python:
MATLAB
save('example.mat','-v7.3')
Python
matdata = hdf5storage.loadmat('example.mat')
Это загрузит обратно в Python в качестве словаря, который вы можете затем преобразовать в любые типы данных, которые вам нужны.