2012-02-25 13 views
1

私はPythonの新機能です。いくつかの長さで8行8列の行列を保存するために、3次元行列を持つ必要があります。問題は、npy.arrayを使用したことです。なぜなら、numpyが論じているように、行列は2次元以上の次元を持つことができないからです。
R = zeros([8,8,530],float)
私はその後、私はscipyのダウンロードがそうすることを主張してマットファイルに保存しようとすると、np.matrix
R[:,:,ii] = smallR
としての私の8×8行列を計算します。
sio.savemat('R.mat',R)
しかし、エラーがあなたが 'numpy.ndarray' オブジェクトが無属性の項目「3次元マトリックス構造を作成し、Pythonでマットファイルに書き込む

/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py:266: FutureWarning: Using oned_as default value ('column') This will change to 'row' in future versions oned_as=oned_as)
Traceback (most recent call last):
File "ClassName.py", line 83, in <module> print (buildR()[1])
File "ClassName.py", line 81, in buildR sio.savemat('R.mat',R)
File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 269, in savemat MW.put_variables(mdict)
File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio5.py", line 827, in put_variables
for name, var in mdict.items(): AttributeError: 'numpy.ndarray' object has no attribute 'items'

答えて

3

を持っていると言いますhelp(sio.savemat)を入力して、あなたは以下を参照してください。

savemat(file_name, mdict, appendmat=True, format='5', long_field_names=False, do_compression=False, oned_as=None) 
    Save a dictionary of names and arrays into a MATLAB-style .mat file. 
[...] 
    mdict : dict 
     Dictionary from which to save matfile variables. 

ので、あなたは辞書メソッドとして.items()を認識しない場合でも、それは我々が辞書(キーのセットを使用する必要があるとしている明らかだ、と値のペア。 Googleの "python辞書のチュートリアル"必要に応じて)。この場合

:配列は名前を付けることができるように、1つの.MATファイル内の複数のオブジェクトを格納できるよう

>>> from numpy import zeros 
>>> from scipy import io as sio 
>>> 
>>> R = zeros([8,8,530],float) 
>>> R += 12.3 
>>> 
>>> sio.savemat('R.mat', {'R': R}) 
>>> 
>>> S = sio.loadmat('R.mat') 
>>> S 
{'R': array([[[ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     ..., 

     ..., 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3]]]), '__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file Platform: posix, Created on: Sat Feb 25 18:16:02 2012', '__globals__': []} 
>>> S['R'] 
array([[[ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     ..., 

     ..., 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3], 
     [ 12.3, 12.3, 12.3, ..., 12.3, 12.3, 12.3]]]) 

基本的には、辞書は、使用されています。

関連する問題