2017-01-06 18 views
0

2つの異なるhdf5ファイルを比較して、一致することを確認しています。私は、手動で入力するのではなく、すべてのデータセットをループで実行できるように、hdf5ファイルのグループ内のすべてのデータセットを含むリストを作成したいと考えています。私はこれをするために離れて見つけることができないようです。現在、このコードを使用してデータを取得しています。HDF5のグループから複数のデータセットを取得する

tdata21 = ft['/PACKET_0/0xeda9_data_0004'] 

セットの名前は、「PACKET_0」グループにあります。

for i in range(len(data1)): 
    print "%d\t%g\t%g" % (i, data1[i],tdata1[i]) 
    if(data1[i]!=tdata1[i]): 
    x="data file: data1 \nline:"+ str(i) + "\norgianl data:" + str(data1[i]) + "\nrecieved data:" + str(tdata1[i]) + "\n\n" 
    correct.append(x) 

私は意志としてそれを見たいファイルをHDF5比較するsmartier方法がある場合は、しかし、主に私はちょうど午前:私はデータセットのすべてを手配したら、私はこのループではデータセット内のデータを比較しますグループ内のすべてのデータセットの名前をリストに入れる方法を探しています。ありがとう

+0

私はこの記事にも同様の質問があることを知っていますが、私は実際にそれを理解していないので、私の場合はうまくいくとすれば、 [リンク](http://stackoverflow.com/questions/35953404/listing-datasets-in-a-group-in-hdf5?rq=1) –

+1

あなたはh5pyを使用していますか?そのタグを追加してください。また、 – hpaulj

+1

http://docs.h5py.org/en/latest/high/group.html#dict-interface-and-links - グループの要素にアクセスする際には、keys() '、' items() 'など – hpaulj

答えて

2

HDF5グループまたはファイルに存在するデータセットまたはグループを取得するには、そのグループまたはファイルに対してlist()を呼び出します。

for name, data in ft['/PACKET_0'].items(): 
    # do stuff for each dataset 

あなたが平等のための2つのデータセットを比較したい場合(つまり、彼らは同じを持っている:あなたの例を使用して、あなたはまた、単に行うことによって、直接それらを反復することができます

datasets = list(ft['/PACKET_0']) 

を持っていると思いますデータ)、最も簡単な方法はこれを行うには、次のようになります。

(dataset1.value == dataset2.value).all() 

これは、各データセットからnumpyの配列を返します。これらの配列要素を-ことにより、要素を比較し、それらがeverywに一致する場合Trueを返します。ここではFalseとなります。

これらの2つの概念を組み合わせて、2つの異なるファイルのすべてのデータセットを比較できます。

関連する問題