2017-07-31 18 views
0

このエラーは、HDF5ファイルのデータをPythonで直接解析しようとしています。このコードは、私のfreshmeat_linux/Linux]マシン上で正常に動作しますが、私はSpyder3で私のMacで同じスクリプトをコンパイルしようとすると、このエラーが発生します。なぜ私は私のMacを使用しようとしている理由は、Linux端末でスクリプトを作成して実行する方法がわからないからです。TypeError: 'KeysView'オブジェクトはインデックス作成をサポートしていません

def dataProcessing(datafile): 
import h5py 
import numpy as np 
import matplotlib.pyplot as plt 
import pylab 

f = h5py.File(datafile, 'r') 
#print(f) 
#print("Keys: %s" % f.keys()) 
groupKeyVal = f.keys()[4] 
rawData = list(f[groupKeyVal]) 

rawDataMat = np.matrix(rawData) 

for i in range(0,len(rawDataMat[:,0])): 
    fig = rawDataMat[i,:] 
    wav = np.squeeze(np.asarray(fig)) 
    plt.plot(wav) 
    plt.show() 

答えて

2

Python3では、辞書keysは、インデックス可能なリストではなく、 'view'を返します。 list追加キーのような辞書のための同様

In [80]: d={'a':1, 'b':2} 
In [81]: d.keys() 
Out[81]: dict_keys(['a', 'b']) 
In [82]: d.keys()[0] 
.... 
TypeError: 'dict_keys' object does not support indexing 

h5から基は

In [86]: f = h5py.File('data.h5') 
In [87]: f.keys() 
Out[87]: KeysView(<HDF5 file "data.h5" (mode r+)>) 
In [88]: f.keys()[0] 
.... 
TypeError: 'KeysView' object does not support indexing 
In [89]: list(f.keys()) 
Out[89]: ['dset', 'dset1', 'vset'] 
In [90]: list(f.keys())[1] 
Out[90]: 'dset1' 

のビットが邪魔ですが、それはより多くのメモリ効率の良いキーに繰り返しを行います。

In [92]: for k in f.keys():print(f[k]) 
<HDF5 dataset "dset": shape (3, 5), type "<f8"> 
<HDF5 dataset "dset1": shape (2, 3, 10), type "<f8"> 
<HDF5 dataset "vset": shape (100,), type "|O"> 
関連する問題