HDF5, 大量(海量?)数据存储的一种解决方案. HDF的全称是Hiearchical Data Format, 5是版本号(未考证过TODO). 一个HDF5文件操作起来就像一个独立的文件系统. (TODO, I/O特性, 是事件驱动的吗?)

import h5py
import numpy as np

创建一个HDF5文件

f = h5py.File("/home/dengdan/temp/no-use/hdftest.hdf5", "w")

它可以存储两类数据对象:

  1. dataset, 类比于文件系统的文件, 可以用操作list/ndarray的方式来操作它
  2. group, 类比于文件系统的文件夹. , 可以用操作dict的方式来操作它

dataset

dset = f.create_dataset(name = "/mydataset1", shape = (100,100), dtype= np.uint8)
print dset.shape
(100, 100)
print dset.dtype
print dset[:]
uint8
[[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
...,
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]
[0 0 0 ..., 0 0 0]]

hdf5以POISX文件系统的风格存储数据对象, 每个对象都有自己的名字, 格式与linux文件路径相同

print dset.name
/mydataset1

group

grp = f.create_group("subgroup")
print grp.name
/subgroup
dset2 = grp.create_dataset("another_ds", (50,), dtype='f')
print dset2.name
/subgroup/another_ds

创建dataset时若指定了上级group, 会自动创建

dset3 = f.create_dataset('subgroup2/dataset_three', (10,), dtype='i')
print dset3.name
/subgroup2/dataset_three

整个hdf文件就像一个大字典,读取dataset时可以根据它的name从中直接取出.

dset3_read = f['subgroup2/dataset_three']
dset3 == dset3_read
True
for name in f:
print name
# 只会显示根目录下的对象.
mydataset1
subgroup
subgroup2
def visit_file(name):
print name
f.visit(visit_file)
# 显示所有对象.
mydataset1
subgroup
subgroup/another_ds
subgroup2
subgroup2/dataset_three

dataset.attrs

dataset对象可以有自己的属性, 但所有属性数据的长度加起来不能超过64K, 包括属性名字.

dset.attrs['length'] = 100
dset.attrs['name'] = 'This is a dataset'
for attr in dset.attrs:
print attr, ":", dset.attrs[attr]
length : 100
name : This is a dataset

# Reference
* http://docs.h5py.org/en/latest/quick.html

markdown由jupyter notebook生成, note book


HDF5基本使用方法的更多相关文章

  1. (数据科学学习手札63)利用pandas读写HDF5文件

    一.简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式,文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一个H ...

  2. Python数据分析之Pandas操作大全

    从头到尾都是手码的,文中的所有示例也都是在Pycharm中运行过的,自己整理笔记的最大好处在于可以按照自己的思路来构建矿建,等到将来在需要的时候能够以最快的速度看懂并应用=_= 注:为方便表述,本章设 ...

  3. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  4. “fatal error: hdf5.h: 没有那个文件或目录”解决方法

    問題一: Installing Caffe without CUDA: fatal error: cublas_v2.h No such file: 在Makefile.config中修改,將CPU_ ...

  5. caffe上使用hdf5格式文件以及回归(regression)问题

    最近用caffe做了一下regression问题,先用data layer中的data,float_data试了一下,data用来存放图片,float_data存放regression的values, ...

  6. c++ 读取不了hdf5文件中的字符串

    问题描述: 在拿到一个hdf5文件,想用c++去读取文件中的字符串,但是会报错:read failed ps: c++读取hdf5的字符串方法见:https://support.hdfgroup.or ...

  7. USD在CentOS7.0操作系统下的安装方法

    最近Pixar的开源USD软件很火,官方在Introduce中明确讲到这个软件的设计开发目标是增强艺术家协作,减少不确定因素,最大化资产版本迭代效率,追求更大的承载能力. 当今行业中传统的线性的制作方 ...

  8. 使用h5py操作hdf5文件

    HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件.HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF ...

  9. Python机器学习笔记:深入学习Keras中Sequential模型及方法

    Sequential 序贯模型 序贯模型是函数式模型的简略版,为最简单的线性.从头到尾的结构顺序,不分叉,是多个网络层的线性堆叠. Keras实现了很多层,包括core核心层,Convolution卷 ...

随机推荐

  1. 【Asp.Net Core】一、Visual Studio 2015 和 .NET Core 安装

    安装 Visual Studio 和 .NET Core 1.安装 Visual Studio Community 2015,选择 Community 下载并执行默认安装.Visual Studio ...

  2. 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

    也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...

  3. WCF入门教程2——创建第一个WCF程序

    本节目标 掌握接口 理解契约式编程 创建宿主程序 创建客户端程序访问服务 什么是接口 认识一下接口 必须知道的接口特性 接口不可以被实例化(常作为类型使用) 实现类必须实现接口的所有方法(抽象类除外) ...

  4. Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39

    Atitit. Atiposter 发帖机 新特性 poster new feature   v7 q39 V8   重构iocutilV4,use def iocFact...jettyUtil V ...

  5. 一分钟搞定AlloyTouch图片轮播组件

    轮播图也涉及到触摸和触摸反馈,同时,AlloyTouch可以把惯性运动打开或者关闭,并且设置min和max为运动区域,超出会自动回弹. 除了一般的竖向滚动,AlloyTouch也可以支持横向滚动,甚至 ...

  6. dagger2记录篇

    作为一个码农,什么都不用多讲,贴代码 build project build module Application public class App extends Application { pri ...

  7. 记一次git amend事故处理方案

    一.问题回顾 问题是git commit --amend 引起的. 一条commit已经push到远端develop了,但是后来又在这条commit上进行了amend操作,导致这条commit的哈希码 ...

  8. [Erlang 0129] Erlang 杂记 VI

    把之前阅读资料的时候记下的东西,整理了一下. Adding special-purpose processor support to the Erlang VM   P23 简单介绍了Erlang C ...

  9. Oracle索引梳理系列(十)- 直方图使用技巧及analyze table操作对直方图统计的影响(谨慎使用)

    版权声明:本文发布于http://www.cnblogs.com/yumiko/,版权由Yumiko_sunny所有,欢迎转载.转载时,请在文章明显位置注明原文链接.若在未经作者同意的情况下,将本文内 ...

  10. PHP语法(一):基础和变量

    相关链接: PHP语法(一):基础和变量 PHP语法(二):数据类型.运算符和函数 PHP语法(三):控制结构(For循环/If/Switch/While) 最近有个H5项目的需求,需要服务端,考察过 ...