【发布时间】:2016-04-08 06:15:13
【问题描述】:
如下图所示(HDF5 格式),我以这种形式保存了我的数据集。所以我有不同的组,即 4、2、40 等,对于每个组,我有 2 个数据集 Annotation 和 Features。我已经使用代码成功保存了它们,但我无法将它们加载回来。
奇怪的是,只有当我尝试阅读 Annotation 时才会出现错误。当我尝试阅读Features 时,阅读效果很好。
我正在使用以下代码:
dataSet = np.array([])
annotation = np.array([])
hdf5Object = readHDF5File('abc.hdf5','r')
w = 2
myGroup = hdf5Object[str(w)]
dataSet = np.array(myGroup['Features'])
annotation = np.array(myGroup['Annotation'])
请在此赐教,因为我为此苦苦挣扎了一段时间。谢谢。
编辑 1
阅读Annotation时出现以下错误
Traceback (most recent call last):
File "xyz.py", line 76, in getAllData
annotation = np.array(myGroup['Annotation'])
File "/usr/lib/python2.7/dist-packages/h5py/_hl/group.py", line 153, in __getitem__
oid = h5o.open(self.id, self._e(name), lapl=self._lapl)
File "h5o.pyx", line 173, in h5py.h5o.open (h5py/h5o.c:3403)
KeyError: "unable to open object (Symbol table: Can't open object)"
编辑 2
所以hdf5文件分2步形成,第一步Features计算如下:
features = <numpy array of thousand rows and 100 columns contains only floating numbers>
w = 2
f = h5py.File('abc.hdf5', 'a')
myGroup = f[str(w)]
myGroup.create_dataset('Features', data=features)
对于不同的w 文件被追加并且特征在不同的时间被计算。
对于注释,使用相同的过程。 Annotation 也只包含浮点数。
编辑 3
下图中是Annotation 和Features 中的一个w 中的数据内容。左边的窗口是Annotation,右边的窗口是Features。
【问题讨论】:
-
您能否提供一个创建和加载此类文件的最小示例,以便人们可以在不访问您的数据的情况下重现错误?谢谢。
-
据我所知,h5py 并不支持 hdf5 的所有功能——会不会是您的注释使用了一些更高级的功能?你能提供一个示例文件吗?
-
请参阅编辑后的帖子。
-
你能在h5py中打开其他文件吗?您是否尝试过运行测试套件 (
h5py.tests.run_tests())? -
@ali_m 是的,我可以用相同的代码打开其他文件,它工作正常。