2017-11-29 10 views
1

への追加Iは、以下の構造を持つファイルを有する:h5pyグループ

  • 時間1つの
  • インデックス1つの
  • 値X
  • 値Y
  • 時間1
  • インデックス2
  • 値x
  • 値y
  • 時間2
  • インデックス1
  • ...

私はh5pyを使用してHDF5形式にファイルを変換し、別のグループに分け、それぞれのインデックスから値をソートしたいです。

(私は...一度だけ、各グループに書き込むことができています)私のアプローチは

f = h5py.File(filename1,'a') 
trajfile = open(filename2, 'rb') 

    for i in range(length_of_filw): 
     time = struct.unpack('>d', filename2.read(8))[0] 
     index = struct.unpack('>i', filename2.read(4))[0]  
     x = struct.unpack('>d', filename2.read(8))[0] 
     y = struct.unpack('>d', filename2.read(8))[0] 

     f.create_dataset('/'+str(index), data=[time,x,y,z]) 

である。しかし、このように私はグループに追加することはできませんよ。エラーメッセージは "RuntimeError:リンクを作成できません(名前は既に存在します)"です。

グループに追加する方法はありますか?

答えて

1

データセットに何度でも書き込むことができます。同じ名前のデータセットを2回持つことはできません。これはあなたが得ているエラーです。データセットを作成すると同時に、内部にデータを入れていることに注意してください。他のデータを書き込むためには、それを収容するのに十分な大きさでなければなりません。

とにかく、私はあなたが混乱するグループとデータセットであると信じています。 グループは、たとえばが、あなたは自分のハンドルを介してそれらを参照することができます -

dst = f.create_dataset('foo',shape=(100,)) # this create the dataset 'foo', with enough space for 100 elements. 

はあなたが一度だけのグループとデータセットを作成する必要があります。

grp = f.create_group('bar') # this create the group '/bar' 

は、あなたはあなたが言ったように作成し、データセット内のデータセットを保存したいです(grpとdst)を書き込んでください。

まず、ファイルを一度作成し、「シェイプ」パラメータを使用して適切なサイズのグループとデータセットを作成し、実際のデータでデータセットを作成することをお勧めします。

関連する問題