看代码吧~
1
2
3
4
5
6
7
8
9
10
11
12
|
import h5py import numpy as np f = h5py. File ( 'train/e1_1.hdf5' ) key = "" for k in f.keys(): key = k d = f[key] print (d) a = np.ones(d.shape) d.read_direct(a) print (a) f.close() |
补充:HDF5 文件及Python模块之h5py
HDF5文件
什么是HDF5文件呢?
先引用一波维基百科的介绍,『层级数据格式(Hierarchical Data Format:HDF)是设计用来存储和组织大量数据的一组文件格式(HDF4,HDF5)。
它最初开发于美国国家超级计算应用中心,现在由非营利社团HDF Group支持,其任务是确保HDF5技术的持续开发和存储在HDF中数据的持续可访问性。』。
HDF5 拥有一系列的优异特性,使其特别适合进行大量科学数据的存储和操作,如它支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等
如何在Linux中查看hdf5文件呢?
1
2
3
4
|
h5ls info.h5 # key1 Dataset {10000} # key2 Dataset {10000,5} # key3 Dataset {20000,30} |
h5py模块
我们可以使用Python非常方便的读写hdf5文件,最常用的模块就是h5py。下面说明一下它的安装及使用方法:
安装模块
1
2
3
|
pip install h5py pip install numpy # numpy 通常是作为配合使用 |
对h5py的总结:
『一个 HDF5 文件是存储两类对象的容器,这两类对象分别为:
dataset:类似数组的数据集合; gropp;类似目录的容器,其中可以包含一个或多个 dataset 及其它的 group。
一个 HDF5 文件从一个命名为 "/" 的 group 开始,所有的 dataset 和其它 group 都包含在此 group 下,当操作 HDF5 文件时,如果没有显式指定 group 的 dataset 都是默认指 "/" 下的 dataset,另外类似相对文件路径的 group 名字都是相对于 "/" 的。
HDF5 文件的 dataset 和 group 都可以拥有描述性的元数据,称作 attribute。
用 h5py 操作 HDF5 文件,我们可以像使用目录一样使用 group,像使用 numpy 数组一样使用 dataset,像使用字典一样使用属性,非常方便和易用。』
写入hdf5文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import h5py import numpy as np # 如果你要在根group下创建dataset f = h5py. File ( 'info.h5' , 'w' ) values1 = np.arange( 12 ).reshape( 4 , 3 ) values2 = np.arange( 20 ).reshape( 4 , 5 ) f.create_dataset(name = 'key1' , data = np.array(values1, dtype = 'int64' )) f.create_dataset(name = 'key2' , data = np.array(values2, dtype = 'int64' )) # 如果你要创建一个group(目录) # 然后指定dataset放置的group f.create_group( '/dir1' ) f.create_group( '/dir1/dir2' ) data = np.arange( 6 ).reshape( 3 , 2 ) f.create_dataset( '/dir1/dir2' , data = data) # 最后别忘了关闭文件 f.close() |
读取hdf5文件
1
2
3
4
|
import h5py with h5py. File (info.h5, 'r' ) as f: values1 = f[ 'key1' ].value values2 = f[ 'key2' ].value |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://guotong1988.blog.csdn.net/article/details/82801368