hdf5文件格式使用记录

引言

hdf5文件结构

python中使用h5py使用hdf5文件

参考链接

引言

最近,在使用gprMax进行仿真时发现gprMax在进行创建目标的可以从hdf5文件导入对象。而且我发现其实gpeMax的out其实也是hdf5文件格式,但是我竟然不知道hdf5文件是啥东西,有必要系统的了解一下。

hdf5文件结构

HDF5 文件一般以 .h5 或者 .hdf5 作为后缀名,需要专门的软件才能打开预览文件的内容。HDF5 文件结构中有 2 primary objects: Groups 和 Datasets。

Groups 就类似于文件夹,每个 HDF5 文件其实就是根目录 (root) group’/’。

Datasets 类似于 NumPy 中的数组 array 。

+-- /

| +-- group_1

| | +-- dataset_1_1

| | | +-- attribute_1_1_1

| | | +-- attribute_1_1_2

| | | +-- ...

| | |

| | +-- dataset_1_2

| | | +-- attribute_1_2_1

| | | +-- attribute_1_2_2

| | | +-- ...

|

整个hdf5文件如上图所示,可以看到group类似我们所熟知的文件夹,dataset就类似于一个numpy中的的array。

每个 dataset 可以分成两部分: 原始数据 (raw) data values 和 元数据 metadata (a set of data that describes and gives information about other data => raw data)。

+-- Dataset

| +-- (Raw) Data Values (eg: a 4 x 5 x 6 matrix)

| +-- Metadata

| | +-- Dataspace (eg: Rank = 3, Dimensions = {4, 5, 6})

| | +-- Datatype (eg: Integer)

| | +-- Properties (eg: Chuncked, Compressed)

| | +-- Attributes (eg: attr1 = 32.4, attr2 = "hello", ...)

|

从上面的结构中可以看出:

Dataspace 给出原始数据的秩 (Rank) 和维度 (dimension)

Datatype 给出数据类型

Properties 说明该 dataset 的分块储存以及压缩情况

Attributes 为该 dataset 的其他自定义属性

python中使用h5py使用hdf5文件

首先安装h5py包,使用 pip install h5py

1.创建一个hdf5文件

#创建一个测试的hdf5文件

import h5py

import numpy as np

f = h5py.File("h5py_exaple.hdf5",'w')

#在该文件下建立一个group

g1 = f.create_group("gro1")

#在g1 group 下建立一个dataset

g1.create_dataset("data1",np.arange(10),np.int16))

g1.reate_dataset("d2",np.arange(10),np.int16))

g1.reate_dataset("d3",np.arange(10),np.int16))

print([key for key in g1.keys()])

#output: ['d2', 'd3', 'data1']

f.close()

2.读hdf5文件

import numpy as np

import h5py

f = h5py.File("h5py_exaple.hdf5","r")

print(f.filename)

#output: h5py_exaple.hdf5

print([key for key in f.keys()])

#output: ['gro1']

print([key for key in f['gro1'].keys()])

#output: ['d2', 'd3', 'data1']

3.追加内容

import numpy as np

import h5py

f = h5py.File("h5py_exaple.hdf5","a")

f.create_group('gro2')

print([key for key in f.keys()])

#output: ['gro1','gro2']

4.删除hdf5文件中的某一个数据集(必须以’w’或者’a’模式打开)

import h5py

with h5py.File("h5py_exaple.hdf5","a") as f:

del f['gro1/data1']

print([key for key in f['gro1'].keys()])

#output ['d2','d3']

参考链接

HDF5数据库和mysql数据库_hdf5文件格式使用攻略相关推荐

  1. mysql使用释放资源_数据库--释放mysql数据库资源

    数据库--释放mysql数据库资源 背景 nikeodong 之前做了项目的数据库主从,在全备的过程发现数据库是越来越大了:最后发现是资源不释放的问题. 目的 为了解决 mysql 资源不释放的问题. ...

  2. mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...

    本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...

  3. oracle数据库跟mysql的区别_关于Oracle数据库与MySQL数据库的几点区别

    Oracle数据库与MySQL数据库的区别是本文我们主要要介绍的内容,接下来我们就开始介绍这部分内容,希望能够对您有所帮助. Oracle与MySQL的区别: 1.在Oracle中用select * ...

  4. abp更改为mysql_ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库

    本文主要向大家介绍了ABPZero系列教程之拼多多卖家工具 更改数据库为MySQL数据库 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. < 因为要部署项目到云服务器,不想 ...

  5. 数据库【MySQL数据库介绍】

    数据库[MySQL数据库介绍] 1.MySQL概要 MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司.MySQL 是一种关联数据库管理系统,关联 ...

  6. mysql数据库,mysql数据库监控介绍

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBM ...

  7. access mysql 同步更新数据_[access 数据库同步]Access数据库到Mysql数据库实时更新

    项目目标: 首先是将Access数据库中的大量数据(已经存好的原有百万级数据)转存到mysql数据库中,然后,随着Access中数据的增加,要同步更新mysql数据库,更新周期自定. 思路:一开始的转 ...

  8. MySQL数据库配置data文件_MySQL数据库之MySQL数据库迁移data文件夹位置详细步骤

    本文主要向大家介绍了MySQL数据库之MySQL数据库迁移data文件夹位置详细步骤 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 由于yum安装mysql的时候,数据库的da ...

  9. 「Mysql数据库」MySQL数据库开发的 36 条军规!

    2019独角兽企业重金招聘Python工程师标准>>> 核心军规 尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条,含Char不超过5M条 保持表身段苗条 平衡范式和冗余 ...

最新文章

  1. python初学者教程我要自学网-我要自学网--json 数据解析-python。
  2. Python之PIL库的运用、GIF处理
  3. 数据结构探险——线性表篇
  4. 笨方法python_笨方法学习Python(11-20)
  5. 163相册密码破解秘诀
  6. CSDN2013年度博客之星评选
  7. xshell连接虚拟机(后续)
  8. Windows Mobile 进阶系列.WCF Mobile(Part 2)
  9. 一个不明觉厉的貌似包含很多linux资料索引的网页
  10. 【数据结构系列】严蔚敏C语言版算法实现并附带详细注释(逐步更新)
  11. java获取网页表单数据,转发与重定向,使用application统计访问次数
  12. 用java代码模拟鼠标双击事件
  13. 西威变频器avo下载调试资料_双色图解变频器及软起动器控制线路
  14. 信号与系统——四对时域频域对应关系
  15. python修改word文本框中的内容
  16. 蒸鱼的七�秘密八�做法 【精美�文】
  17. Java、储物柜难题
  18. webotAI网页版上线啦!
  19. [音乐]阿桑的《叶子》
  20. 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示

热门文章

  1. java计算机毕业设计自动化办公系统源码+mysql数据库+系统+lw文档+部署
  2. 小米温湿度计接入金桔通用蓝牙网关
  3. win服务器性能测试,windows服务器性能测试
  4. 账单php,php 处理微信账单
  5. LearnOpenGL-CN笔记(一)
  6. 雷电网络(二):掌握雷电网络的特点 | 区块链技术博客
  7. Win8.1重装win7或win10中途无法安装
  8. 手机百度打不开html网页,手机百度为什么打不开网页 网页打不开解决方法
  9. 机器人常用传感器学习总结
  10. 干货分享 | GopherChina 2019北京大会PPT下载