我目前正在玩h5py文件提取。当我运行下面的脚本时,它似乎输出相同的结果。谁知道差异?
train_dataset = h5py.File('datasets/train_happy.h5', "r")
train_set_x_orig1 = np.array(train_dataset["train_set_x"][:])
train_set_x_orig2 = np.array(train_dataset["train_set_y"])
感谢任何提供输入的人!
答案 0 :(得分:2)
使用来自其他SO问题的示例文件
In [183]: f = h5py.File('temp.h5','r')
In [184]: list(f.keys())
Out[184]: ['db1', 'db2', 'db3', 'db4', 'temp']
只需要键返回一个Dataset
(类似操作的字典)
In [185]: x = f['db1']
In [186]: type(x)
Out[186]: h5py._hl.dataset.Dataset
In [187]: x
Out[187]: <HDF5 dataset "db1": shape (5,), type "|V4">
添加[:]
(或其他一些索引)足以将数据加载到数组中:
In [188]: y = f['db1'][:]
In [189]: type(y)
Out[189]: numpy.ndarray
In [190]: y
Out[190]: array([('a',), ('ab',), ('',), ('',), ('',)], dtype=[('str', 'O')])
无需进一步np.array
包装。
http://docs.h5py.org/en/latest/high/dataset.html#reading-writing-data
value
属性也有效(我不确定这在哪里记录):
In [191]: x.value
Out[191]: array([('a',), ('ab',), ('',), ('',), ('',)], dtype=[('str', 'O')])
array
包装器有效:
In [192]: np.array(x)
Out[192]: array([('a',), ('ab',), ('',), ('',), ('',)], dtype=[('str', 'O')])
快速设置timeits
并没有显示任何差异。
但在发行说明中:
http://docs.h5py.org/en/latest/whatsnew/2.1.html#dataset-value-property-is-now-deprecated
属性 Dataset.value (可追溯到h5py 1.0)已弃用,将在以后的版本中删除。此属性将整个数据集转储到NumPy数组中。使用.value的代码应该更新为使用NumPy索引,使用 mydataset [...] 或 mydataset [()] 。