HDF(Hiearchical Data Format)是一种针对大量数据进行组织和存储的文件格式,可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输。

HDF是美国国家高级计算应用中心(National Center for Supercomputing Application,NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。它的通用性比较强,许多数据类型都可以被嵌入在一个HDF文件里。例如符号、数字和图形数据可以同时存储在一个HDF文件里。HDF还是跨平台的,是一种与平台无关的文件格式,无需任何转换就可以在不同平台上使用。

从20世纪八十年代起,NCSA陆续推出了HDF1~HDF4版本,HDF5发布于1998年,相比HDF4,HDF5具有以下改进:

  • 被设计为一种新的格式用来改进HDF4.x,特别是每个文件可以存储更大的文件和更多的对象。
  • 数据模式更简洁、更全面,它包含两个基本结构:多维数组记录结构,和分组结构。
  • 更简洁、更利于工程库和应用编程接口,支持并行I/O,线程和其他一些现代系统和应用要求。

HDF5 是一种层次化的格式(hierarchical format),经常用于存储复杂的科学数据。例如 MATLAB 就是用这个格式来存储数据。在存储带有关联的元数据(metadata)的复杂层次化数据的时候,这个格式非常有用,例如计算机模拟实验的运算结果等,并且在技术上提供了丰富的接口,包含C,C++,Fortran, Python, Java等,能够在不同的语言间完美兼容。

HDF5在Python中的工具包是h5py,创建一个HDF5文件:

# -*- coding: utf-8 -*-
import h5py # 导入工具包
import numpy as np # HDF5的写入:
imgData = np.zeros((30, 3))
with h5py.File('HDF5_FILE.h5', 'w') as f:
f['data'] = imgData # 将数据写入文件的主键data下面
f['labels'] = range(100) # 将数据写入文件的主键labels下面
# f.close() # 关闭文件
print '*.h5 Created.

或者:

# -*- coding: utf-8 -*-
import h5py # 导入工具包
import numpy as np # HDF5的写入:
imgData = np.zeros((30, 3))
with h5py.File('HDF5_FILE.h5', 'w') as f:
f.create_dataset('data', data=imgData)
f.create_dataset('labels', data=range(100)) # f.close() # 关闭文件
print '*.h5 Created.'

读取.h5文件内容:

# -*- coding: utf-8 -*-
import h5py # 导入工具包
import numpy as np # HDF5的读取:
with h5py.File('HDF5_FILE.h5', 'r') as f:
for item in f.keys():
print 'main key is: {}'.format(item)
content = f[item][:]
print 'key value of {0} is: {1}'.format(item,content)
# f.close()

最新文章

  1. 操作系统篇-hello world(免系统运行程序)
  2. ebs如何将客户化的PL/SQL程序发布到webservice
  3. .NET MVC3中扩展一个HtmlHelper方法CheckBoxList
  4. UITableView小知识点总结
  5. PHP:parse_str()字符串函数
  6. 利用stdin stdout stderr及POSIX-linux机制重定向写日志
  7. Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)
  8. 【转】Everything中文绿色版在Win7/8用不了?
  9. sffs
  10. qt的安装及连接sql使用注意
  11. 关于极光推送在手机系统低于iOS10的手机上闪退的问题。
  12. 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)
  13. Leetcode题解(29)
  14. Jenkins+Gitlab CE+Robot Framework持续集成
  15. LOCAL_EXPORT_××用法
  16. Linux系统下启动tomcat报错【java.util.prefs.BackingStoreException: Couldn't get file lock】的解决方法
  17. PAT甲题题解-1073. Scientific Notation (20)-字符串处理
  18. python的数据结构之数字和字符串(四)
  19. VS2017 Linux C++引用自定义的动态库
  20. centos 6.5 安装mysql 5.6.35--libc.so.6(GLIBC_2.14)(64bit)

热门文章

  1. 覆盖bootstrap的样式
  2. springmvc 原生servlet支持
  3. HTML5之概述
  4. 使用 libevent 和 libev 提高网络应用性能(IBM)
  5. 防火墙之地址转换SNAT DNAT
  6. STemWin5.22在STM32F103上的移植步骤
  7. CVE补丁安全漏洞【学习笔记】
  8. Mybatis映射配置文件<select>的学习
  9. 如何实现一个简单的RPC
  10. PHP正则表达式 /i, /is, /s, /isU等 都是些什么东西呢?