您必須下載到像這樣進行測試的數據集。
使用測試文件,我已經掛在:
In [318]: f = h5py.File('data.h5')
In [319]: list(f.keys())
Out[319]: ['dset', 'dset1', 'vset']
In [320]: f['dset']
Out[320]: <HDF5 dataset "dset": shape (3, 5), type "<f8">
我可以索引和測試單個項目或數據集
In [321]: f['dset'][1]
Out[321]: array([ 1., 1., 1., 1., 1.])
In [322]: f['dset'].shape
Out[322]: (3, 5)
In [323]: f['dset'][...]
Out[323]:
array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
的片,但在數據集上的布爾測試不工作:
In [324]: f['dset']>0
...
TypeError: unorderable types: Dataset() > int()
==1
工作,但比較數據集對象與1,並不可避免地返回s False
。這就是爲什麼where
爲您提供了一個空的結果:
In [325]: f['dset']==1
Out[325]: False
要進行其他的元素測試的元素我有「索引」的數據集:
In [326]: f['dset'][...]>0
Out[326]:
array([[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]], dtype=bool)
我解決它,改成:'數據= HF ['data'] [::]'。謝謝:)我必須等幾分鐘才能接受你的答案。 – matchifang
我相信你也可以在HDF5數據集對象上調用'np.array'來創建一個numpy數組。 – Praveen
我推薦'f ['dset'] .value'在'np.array(f ['dset'])''上。無論如何,我們需要知道'dataset'和內存中的數組是有區別的。 – hpaulj