Python veya matlabda 60000X70000 matrisini içeren çoğaltma gerçekleştirmem gerekiyor. 16GB'lık bir RAM'ım var ve matrisin her bir satırını kolayca yükleyebiliyorum (buna ihtiyacım var). Matrisi bir bütün olarak python'da oluşturabilirim ama matlabda değil. Yine de her satırı ayrı ayrı yükleyebilmem için diziyi h5py veya scipy kullanarak v7.3 .mat dosyası olarak kaydedebilir miyim?Python'da v7.3'ün bir .mat dosyası oluşturma
cevap
MATLAB v7.3 için hdf5storage
'u h5py
numaralı telefonu kullanabilirsiniz, dosyayı buradan indirin, ayıklayın ve bir komut isteminden: python setup.py install
yazın. MATLAB kerede her şeyi yüklemek yapamıyorsanız 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)
, sana farklı değişkenler kaydetmek gerekecek düşünüyorum matfiledata[u'chunk1'] matfiledata[u'chunk2'] matfiledata[u'chunk3']
vb Eğer her öbek kaydederseniz MATLAB'ta Sonra
değişken vb
load(filename,'chunk1')
do stuff...
clear chunk1
load(filename,'chunk2')
do stuff...
clear chunk2
hdf5storage.savemat P içine okunacak dosyanın izin vermek için bir parametre vardır Eğer böyle bir şey yapmak rağmen ython doğru yüzden incelemeye değer ve scipy.io.loadmat biçimine uygundur gelecekte ... MATLAB'den verileri kaydetme kolay Python geri almak için yapmak durumunda:
MATLAB
save('example.mat','-v7.3')
Python
matdata = hdf5storage.loadmat('example.mat')
Bu, Python'a bir sözlük olarak geri yükler, daha sonra ihtiyacınız olan veri tiplerine dönüştürebilirsiniz.
Sözlük adlarının adını u'name olarak yazmayı unuttunuz mu? – Matt
Teşekkürler! Ama 'hdf5storage.write' komutunu çalıştırmaya çalışırken bir bellek hatası alıyorum bir geçici çözüm var mı? –
evet Şimdi çözdüğüm sözlük anahtarının doğru sözdizimini unuttum. –