python制作图片数据集 h5py_python库--用h5py处理数据集

最近看源码遇到了h5py库,于是去简单了解了一下

对于深度学习而言,跑程序的时候经常会在加载数据集的时候出现Memory error,感觉python的h5py包处理数据集非常方便,导入数据时,并不会占据内存空间

安装

conda install h5py

创建h5py文件

>>> import h5py

>>> import numpy as np

>>> f = h5py.File("mytestfile.hdf5", "w")

create_dataset创建一个给定形状和dtype的数据集

>>> dset = f.create_dataset("mydataset", (100,), dtype='i')

也可以

>>> import h5py

>>> import numpy as np

>>> with h5py.File("mytestfile.hdf5", "w") as f:

>>> dset = f.create_dataset("mydataset", (100,), dtype='i')

Groups和分层组织

“HDF”代表“分层数据格式”。 HDF5文件中的每个对象都有一个名称,它们使用/ -separator排列在POSIX样式的层次结构中:

>>> dset.name

u'/mydataset'

此系统中的“folders”称为Groups。 我们创建的File对象本身就是一个Groups,在本例中是根Groups,名为/:

>>> f.name

u'/'

创建子组是通过适当命名的create_group完成的。 但我们需要先在“append”模式下打开文件(如果存在则读/写,否则创建)

>>> f = h5py.File('mydataset.hdf5', 'a')

>>> grp = f.create_group("subgroup")

所有Group对象也都有像File这样的create_ *方法:

>>> dset2 = grp.create_dataset("another_dataset", (50,), dtype='f')

>>> dset2.name

u'/subgroup/another_dataset'

读取文件

假设某人发送了一个HDF5文件mytestfile.hdf5。 (要创建此文件,请阅读创建文件。) 您需要做的第一件事是打开文件进行阅读:

>>> import h5py

>>> f = h5py.File('mytestfile.hdf5', 'r')

记住h5py.File就像一个Python字典,因此我们可以检查key,

>>> list(f.keys())

['mydataset']

让我们将数据集检查视为对象检查

>>> dset = f['mydataset']

获得的对象不是数组,而是HDF5数据集。 与NumPy数组一样,数据集同时具有形状和数据类型:

>>> dset.shape

(100,)

>>> dset.dtype

dtype('int32')

它们还支持切片。

>>> dset[...] = np.arange(100)

>>> dset[0]

0

>>> dset[10]

10

>>> dset[0:100:10]

array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])

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