python制作图片数据集 h5py_如何创建数据的h5py数据集

h5py.Dataset('myset', (100,))试图直接创建一个dataset对象(调用它的__init__?)。但根据参考文献:class Dataset(identifier)

Dataset objects are typically created via Group.create_dataset(), or by

retrieving existing datasets from a file. Call this constructor to

create a new Dataset bound to an existing DatasetID identifier.

即使你能得到这样一个对象(我仍然不明白),它在np.dtype中也行不通。例如,如果我用datetime.datetime对象替换它,结果是dtype='O'

^{2}$

在numpydytes中,定义了诸如string、int和float和object(而不是list、dict或其他Python类)。在

我可以将复合数据类型保存到h5py,但不能保存对象数据类型。有一个h5py数据类型被加载到一个numpy对象数据类型中,但一般来说,它不会朝另一个方向工作。在In [7]: import h5py

In [8]: f = h5py.File('wtihref.h5','w')

In [9]: ds0 = f.create_dataset('dset0',np.arange(10))

In [10]: ds1 = f.create_dataset('dset1',np.arange(11))

In [11]: ds2 = f.create_dataset('dset2',np.arange(12))

In [12]: ds2.ref

Out[12]:

In [13]: ref_dtype = h5py.special_dtype(ref=h5py.Reference)

In [14]: ref_dtype

Out[14]: dtype('O')

In [16]: rds = f.create_dataset('refdset', (5,), dtype=ref_dtype)

In [17]: rds[:3]=[ds0.ref, ds1.ref, ds2.ref]

In [28]: [f[r] for r in rds[:3]]

Out[28]:

[,

,

]

使用复合数据类型In [55]: dt2 = np.dtype([('x',int),('y','S12'),('z',ref_dtype)])

In [56]: rds1 = f.create_dataset('refdtype', (5,), dtype=dt2)

In [72]: rds1[0]=(0,b'ONE',ds0.ref)

In [75]: rds1[1]=(1,b'two',ds1.ref)

In [76]: rds1[2]=(2,b'three',ds2.ref)

In [82]: rds1[:3]

Out[82]:

array([(0, b'ONE', ),

(1, b'two', ),

(2, b'three', )],

dtype=[('x', '

In [83]: f[rds1[0]['z']]

Out[83]:

h5py使用dtype的metadata属性来存储引用上的信息:In [84]: ref_dtype.metadata

Out[84]: mappingproxy({'ref': h5py.h5r.Reference})

In [85]: dt2.fields['z']

Out[85]: (dtype('O'), 16)

In [86]: dt2.fields['z'][0].metadata

Out[86]: mappingproxy({'ref': h5py.h5r.Reference})

你可能感兴趣的:(python制作图片数据集,h5py)