2016-05-09 5 views
5

私はロードして分析したいhdf5ファイルにたくさんの画像を持っています。各画像は1920x1920のuint16であり、メモリにそれらをすべてロードするとコンピュータがクラッシュします。画像をスライスして、他の人がそれを回避すると言われました。データが1920x1920x100(100画像)であれば、各画像の最初の80行を読み込み、そのスライスを分析してから次のスライスに移動します。これは、私は問題なく行うことができますが、私はHDF5ファイルにデータセットを作成しようとすると、それは、TypeError例外を取得:要素0を変換できません...h5pyは要素0をhsize_tに変換できません

をhsize_tするために、私はとの問題を再現することができますこの非常に単純化されたコード:

with h5py.File('h5file.hdf5','w') as f: 
    data = np.random.randint(100, size=(15,15,20)) 
    data_set = f.create_dataset('data', data, dtype='uint16') 

出力が得られます。

TypeError: Can't convert element 0 ([[29 50 75...4 50 28 36 13 72]]) to hsize_t 

私も「data_set =」と「DTYPE = 『uint16の』」を省略して試してみましたが、私はまだ同じを取得しますエラー。コードは次のようになります。

with h5py.File('h5file.hdf5','w') as f: 
    data = np.random.randint(100, size=(15,15,20)) 
    f.create_dataset('data', data) 

誰でも問題の原因を教えていただけますか? 乾杯!

答えて

7

create_datasetの2番目のパラメータはシェイプパラメータ(docsを参照)ですが、配列全体を渡します。既存の配列でデータセットを初期化する場合は、次のようにdataキーワードで指定する必要があります。

data_set = f.create_dataset('data', data=data, dtype="uint16") 
+0

乾杯!今それは動作します:) – DonMP

関連する問題