2016-04-01 25 views
1

pythonまたはmatlabのいずれかで60000X70000行列を含む乗算を実行する必要があります。私は16GBのRAMを持っていて、行列の各行を簡単に読み込むことができます(これは私が必要とするものです)。私はMatlabではなく、Pythonで全体として行列を作成することができます。 とにかく、h5pyまたはscipyを使ってv7.3の.matファイルとして配列を保存できるので、各行を別々に読み込むことができますか?Pythonでv7.3の.matファイルを作成する

答えて

2

hdf5storageにはh5pyが必要です。ここでファイルをダウンロードして抽出し、コマンドプロンプトからpython setup.py installと入力します。 MATLABは、一度に全部を読み込むことができない場合 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) 

は、私はあなたが別の変数に保存する必要があると思う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ファイルはPに読み込まれることを可能にするパラメータを持っていますあなたはこのような何かを行うことができますが、ythonは正しくので、チェックアウトする価値、およびscipy.io.loadmat形式を次の将来に... MATLABからのデータを保存することは、簡単のPythonに戻ってインポートできるようにする場合:

MATLAB  
save('example.mat','-v7.3') 
Python 
matdata = hdf5storage.loadmat('example.mat') 

これはPythonに読み込まれて辞書になり、必要なデータ型に変換することができます。

+0

辞書名の名前をu'name 'としておくことを忘れましたか?ユニコードキーになりますか? – Matt

+0

ありがとう!しかし、 'hdf5storage.write'コマンドを実行しようとすると、メモリエラーが発生する可能性があります。 –

+0

はい私は今解決した辞書キーの正しい構文を忘れてしまった。 –

関連する問題