1. h5py 文件介绍

一个h5py文件是 “dataset” 和 “group” 二合一的容器。
1. dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作
2. group : 包含了其它 dataset 和 其它 group ,像字典一样工作

看下图:

通过上图,我们可以知道 h5py 文件就像是文件夹一样,里面很放文件还有文件夹,主文件夹以 ‘/’ 开始,这又像Linux的树形结构。知道这些我们就可以开始向 h5py 文件读取或者写入了。

2. 写入数据

根据上面的了解,我们开始创建一个h5py文件并写入数据:

import h5py"""create_dataset : 新建 datasetcreate_group : 新建 group
"""x = np.arange(100)with h5py.File('test.h5','w') as f:f.create_dataset('test_numpy',data=x)subgroup = f.create_group('subgroup')subgroup.create_dataset('test_numpy',data=x)subsub = subgroup.create_group('subsub')subsub.create_dataset('test_numpy',data=x)

代码讲解:以上面的结构图进行讲解,我们以写的模式新建了一个 test.h5 的 h5py 文件,然后我们新建了一个文件叫 test_numpy 并写入了预先准备好的 numpy array .接着新建一个文件夹叫 subgroup 并在里面也新建同样的 test_numpy 文件,又在里面新建了一个叫 subsub 的文件夹 ….

可以发现这真的就跟我们平时操作文件夹没有什么区别。

3. 读取数据

"""keys() : 获取本文件夹下所有的文件及文件夹的名字f['key_name'] : 获取对应的对象
"""
def read_data(filename):with h5py.File(filename,'r') as f:def print_name(name):print(name)f.visit(print_name)print('---------------------------------------')subgroup = f['subgroup']  print(subgroup.keys())print('---------------------------------------')dset = f['test_numpy']print(dset)print(dset.name)print(dset.shape)print(dset.dtype)print(dset[:])print('---------------------------------------')read_data('test.h5')

输出结果:

跟我们预期的一样,主文件 / 下有 subgroup 和 test_numpy 而 /subgroup 下又有两个对象,对应的就是我们上面新建的。dataset 的使用也确实跟 numpy 数组相似。总之,你可以像使用 numpy 数组一样使用 dataset ,使用 字典 一样使用 group 。

4. 总结

前面说了 dataset 是类 numpy array 所以,你能写进的数据 只能只能只能 是数组,如果你想存入其他的数据,参考下面的实现。

4.1 如何存储字符串

确定存储的数据类型,python3 vlen = str ,python 2 vlen=unicode
新建数据库后,明确数组的维度,传入类型,再赋值。

dt = h5py.special_dtype(vlen=str)
data = np.array([['123'],['456']])
with h5py.File('testdict.h5','w') as f:ds = f.create_dataset('test_dict', data.shape , dtype=dt)ds[:] = data

4.2 如何存储ASCII

跟上面类似

dt = h5py.special_dtype(vlen=bytes)

最后献上 h5py文档。

h5py 必知--String存储相关推荐

  1. c2064 项不会计算为接受0个参数的函数_【JS必知必会】高阶函数详解与实战

    本文涵盖 前言 高级函数概念 函数作为参数的高阶函数 map filter reduce sort详解与实战 函数作为返回值的高阶函数 isType函数与add求和函数 如何自己创建高阶函数 前言 一 ...

  2. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

  3. 必知必会 | WebView 的一切都在这儿

    必知必会 | WebView 的一切都在这儿 文章较长,且大部分说明包含在注释中,建议收藏后慢慢看~ 1 目录 相关API 1.1. 相关类介绍 1.2. WebView 1.3. WebSettin ...

  4. 性能调优之JMH必知必会1:什么是JMH

    性能调优之JMH必知必会1:什么是JMH JMH必知必会系列文章(持续更新) 一.前言 二.什么是JMH 1.JMH简介 2.JMH入门 3.使用JMH进行微基准测试 JMH必知必会系列文章(持续更新 ...

  5. 程序猿必知英语词汇总结

    程序员必知1700英语单词 这篇文章对英语基础不好的小白特别有帮助 转自:https://blog.csdn.net/z770816239/article/details/80043967 1. fi ...

  6. 程序猿必知必会[EP1]MD5算法

    1. 基础信息: MD5算法,全称MD5信息摘要算法(MD5 Message-Digest Algorithm),是一种广泛使用的密码散列函数,可以产生128位 / 16字节的散列值(hash val ...

  7. 英:程序员必知单词、语句、英文缩写汇总

    转自: 程序员必知单词.语句.英文缩写汇总 程序员必知单词.语句.英文缩写汇总 2018年11月06日 14:02:52 牟垚 阅读数:180 综述:便于类,函数命名,工作文档阅读而做的单词积累,还是 ...

  8. SQL必知必会第4版读书笔记

    SQL必知必会_4 前言 @author 鲁伟林 在读电子版<<SQL必知必会>> 第4版时,做了下笔记.供以后自己或者其他学习者参考. 电子版<<SQL必知必会& ...

  9. java面试必知必会

    java面试必知必会 面向对象 成员变量成员方法 Integer相关 double 和 Double相关 多态,向上转型 hashcode.==.equals比较 java中子类继承父类时是否继承构造 ...

最新文章

  1. orion的简单测试
  2. python re库常用_Python re库指南
  3. php分享表单提交到本页的实例
  4. jQuery 调用jsonp实现与原理
  5. 【算法精讲】集成分类与随机森林
  6. linux上点时间延时,Linux上时间和定时器
  7. java基础覆盖——知识库搭建-1
  8. 开课吧课堂:数据可视化的制作方法与准则有哪些?
  9. 6.exports、module.exports、export、export defalut
  10. Microsoft .NET Micro Framework Training conducted by Sean Liming (上海)
  11. Atitit 每个人都应该实施的互联网金融战略 attilax总结
  12. 离线CSDN网页打开跳转首页的解决方法
  13. 学习Java技术Eclipse版本的选择
  14. 长方形面积计算机方式,长方形正方形面积计算
  15. Nacos 一致性协议:Distro协议
  16. 虚拟机安装win7出现错误
  17. 微信新表情真的太骚了!!
  18. VMware 虚拟机系统 与 win10 共享文件夹问题的解决
  19. Linux关闭防火墙命令
  20. 支付宝SDK集成服务端(java)

热门文章

  1. 如何打包c#编写的程序
  2. php正则匹配中文和英文字母,PHP正则匹配中文字母数字正则的表达式
  3. 玩转华为ENSP模拟器系列 | 配置RSTP功能示例
  4. 微信小程序 php解密,微信小程序des加密、PHP des解密
  5. 2203-python基础知识
  6. [Lorg/openxmlformats/schemas/spreadsheetml/x2006/main/CTPhoneticRun报错
  7. vue3.0之-watch全面解析
  8. B360主板i5 8400装Win7记录
  9. python rot13_PHP str_rot13() 函数
  10. 计算机毕业设计之java+ssm基于个人需求的外卖订餐推荐系统