h5py

2017-01-31 2 views
1

を使用してメモリに全部をロードすることなく、大容量のファイルから読み取り、次がメモリに全体の事を一度をロードせずにデータセットから読まん[全部がメモリに収まらない]とサイズを取得h5pyを使用してデータをロードすることなく、データセットのそうでない場合、どうですか?h5py

h5 = h5py.File('myfile.h5', 'r') 
mydata = h5.get('matirx') # are all data loaded into memory by using h5.get? 
part_of_mydata= mydata[1000:11000,:] 
size_data = mydata.shape 

ありがとうございました。

答えて

2

get(または索引付け)は、ファイルのデータセットへの参照をフェッチしますが、データはロードされません。

In [789]: list(f.keys()) 
Out[789]: ['dset', 'dset1', 'vset'] 
In [790]: d=f['dset1'] 
In [791]: d 
Out[791]: <HDF5 dataset "dset1": shape (2, 3, 10), type "<f8"> 
In [792]: d.shape   # shape of dataset 
Out[792]: (2, 3, 10) 
In [793]: arr=d[:,:,:5] # indexing the set fetches part of the data 
In [794]: arr.shape 
Out[794]: (2, 3, 5) 
In [795]: type(d) 
Out[795]: h5py._hl.dataset.Dataset 
In [796]: type(arr) 
Out[796]: numpy.ndarray 

dデータセットは、配列のようにではなく、実際にnumpy配列です。

で全体のデータセットを取得する:それはyoursliceはスライス、データレイアウト、チャンキング、そして一般的にあなたのコントロール下にない他のものに依存して取得するために読まなければならない正確にどのようにファイルの

In [798]: arr = d[:] 
In [799]: type(arr) 
Out[799]: numpy.ndarray 

あなたを心配するべきではありません。

また、1つのデータセットを読み込むときに、他のデータセットを読み込んでいないことにも注意してください。グループにも同じことが適用されます。

http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data

関連する問題