python上数据存储 .h5格式或者h5py
最近在做城市计算的项目,数据文件是以.h5的格式存储的,总结下其用法和特点
来自百度百科的简介:
HDF(Hierarchical Data Format),可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。大多数计算机都支持这种文件格式。
目前常用的图像文件格式很多,如GIF,JPG,PCX,TIFF等。这些格式共同的缺点是结构太简单,不能存放除影像信息外其他的有用数据,像遥感影像的坐标值、参数等都无法在其中保存,而且用不同格式存储影像数据使得读取、传输、共享变得复杂,因此,有必要建立一种标准格式以解决上述问题。
HDF是美国国家高级计算应用中心为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。HDF可以表示出科学数据存储和分布的许多必要条件。HDF被设计为:
自述性:对于一个HDF文件里的每一个数据对象,有关该数据的综合信息(元数据)。在没有任何外部信息的情况下,HDF允许应用程序解释HDF文件的结构和内容。
通用性:许多数据类型都可以被嵌入在一个HDF文件里。例如,通过使用合适的HDF数据结构、符号、数字和图形数据可以同时存储在一个HDF文件里。
灵活性:HDF允许用户把相关的数据对象组合在一起,放到一个分层结构中,向数据对象添加描述和标签。它还允许用户把科学数据存放到多个HDF文件里。
扩展性:HDF极易容纳将来新增的数据模式,容易与其他标准格式兼容。
跨平台性:HDF是一个与平台无关的文件格式。HDF文件无需任何转换就可以在不同平台上使用。
科学家通常在不同的机器上生成和处理数据文件。各式各样的软件包被用来多种处理文件,同时也与其他使用不同机器和软件的人共享数据文件。在一组文件里,这些文件也许包含不同类型的信息。这些不同类型的信息混合结构在一个文件里的意义与另一个文件的意义不同。这些文件也许概念上有关但在实质上却不同。HDF通过提供一个一般目的的文件结构来表明这些问题:HDF为程序提供一个从数据文件本身获取数据信息的机制,而不是其他来源。
一、python读取HFD5文件
HDF5是一种层次化的格式(hierarchial format),经常用于存储复杂的科学数据。例如MATLAB就是用这个格式来存储数据,在存储带有关联的元数据(medata)的复杂层次化数据的时候,这个格式非常有用。例如计算机模拟实验室的运算结果等等。与HDF5相关的主要概念有以下几个:
文件file:层次化数据的容器,相当于树根(‘root’ for tree)
组group:树的一个节点(node for a tree)
数据集 dataset:数值数据的数组,可以非常非常大
属性atrribute:提供额外信息的小块的元数据
python操作HDF5文件:https://www.jianshu.com/p/998c861d32e3
示例:创建hdf5文件
import os
import h5py
import numpy as np imgData = np.zeros((4392,2,16,8)) if not os.path.exists('1.h5'):
with h5py.File('1.h5') as f:
f['data'] = imgData
f['labels'] = range(100)
示例:读取
import os
import h5py
import numpy as np with h5py.File('test.hdf5') as f:
print(f)
print(f.keys)
HDF5的优点:
速度、内存占用,压缩程度都比cPickle+gzip来的优秀。
与其他方式对比:
1、numpy.save, numpy.savez, scipy.io.savemat
numpy和scipy提供的数据存储方法,官方说save的压缩版,尽管在实践中,什么都没能压缩到。
而且这三个方法产生的文件大小都一样的...非常大。
2、cPickle+gzip
这里忽略pickle这家伙,直接被cPickle虐了
.pkl.gz是mnist的官方后缀。看来是会很好用的样子。
但在实际使用中,有两个难以避免的问题:
速度慢,内存占用高(就是性能不好)
大矩阵存储无能
3、h5py
基本找不到缺点,唯一的缺点是很难安装。
参考:http://www.cnblogs.com/Ponys/p/3671458.html
python上数据存储 .h5格式或者h5py的更多相关文章
- python 爬虫数据存入csv格式方法
python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...
- 杂: PYTHON上数据储存:推荐h5py
一篇很短的小短文,主要推荐下做科学计算是大量数据的储存问题 最近在做一个CNN的项目,文件夹里有20w张图片要读入并保存到一个data文件(不然每次都读20w文件太麻烦). 折腾了一个下午,发现了一个 ...
- python的数据存储
Python存储数据 使用json.dump()和json.load() 不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中.用户关闭程序时,你几乎总是要保存他们提供的信息:一种简单 ...
- python轻量级数据存储
python为开发者提供了一个轻量级的数据存储方式shelve,对于一些轻量数据,使用shelve是个比较不错的方式.对于shelve,可以看成是一个字典,它将数据以文件的形式存在本地.下面介绍具体用 ...
- python爬虫#数据存储#JSON/CSV/MYSQL/MongoDB/
Json数据处理 JSON支持数据格式: 对象(字典).使用花括号. 数组(列表).使用方括号. 整形.浮点型.布尔类型还有null类型. 字符串类型(字符串必须要用双引号,不能用单引号). 多个数据 ...
- python与数据存储
思考:为什么使用计算机? 存储数据,计算数据 思考:数据存在哪里? 数据存在内存里 内存:内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁.计算机中所有程序的运行都是在内存中进行的,因此内存的 ...
- 数据库char varchar nchar nvarchar,编码Unicode,UTF8,GBK等,Sql语句中文前为什么加N(一次线上数据存储乱码排查)
背景 公司有一个数据处理线,上面的数据经过不同环境处理,然后上线到正式库.其中一个环节需要将数据进行处理然后导入到另外一个库(Sql Server).这个处理的程序是老大用python写的,处理完后进 ...
- 通过id()函数学习python的数据存储以及引用方式
id()函数是python的内置函数,用于获取对象的内存地址. 1.1 可以看出,33被存储在内存地址19877464上,对变量a赋值,实际上是将其指向存储着33的内存地址. 1.2 不仅是数字类型, ...
- python 爬虫数据时间转换格式
from datetime import datetimea = '2018/9/18 10/10'print(datetime.strptime(a,'%Y/%m/%d %H/%M'))>&g ...
随机推荐
- css盒子模型 css3盒子相关样式
1.内边距(内边距在content外,边框内) 内边距属性: padding 设置所有边距 padding-bottom 底边距 padding-left ...
- Yii2.0 高级版安装 windows
最近在学习yii2.0 在安装高级版的时候遇到一些问题 索性解决了 下面分享一下 一.关于下载 自行百度,在Yii Framework 中文社区 下载专区下载高级应用程序模板(这边下载用电信网络不用下 ...
- 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:8.自定义传输协议
欢迎阅读我的开源项目<迷你微信>服务器)与<迷你微信>客户端 前言 在上一篇中,我们讲到了<迷你微信>服务器)的主体架构,还讲到了如何在现有功能上进行拓展,但是拓展 ...
- Nagios-4.1.1 (OpenLogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: apache2.4.6 nagios 4.1.1 php5.4.16 devops monitoring nagios open-source ph ...
- 360、IE等浏览器对bootstrap的影响
笔者开发的web程序部署上线后发现,bootstrap的菜单不显示,开发时候用chrome没有发现问题,在360浏览器上跑,发现360默认的是兼容模式,切换到极速模式就能够显示菜单了. 但是这样的用户 ...
- HDU1664 BFS + 数论 + 剪枝
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1664 , 一道比较蛋疼的搜索题. 这道题有很多坑点,一点处理不好就要TLE. 题意很简单,就是找到一个 ...
- Linux内核参数min_free_kbytes
1. min_free_kbytes 先看官方解释: This is used to force the Linux VM to keep a minimum number of kilobytes ...
- Python小脚本程序
本文旨在搜集最简单最原子性的代码块,简单清晰容易阅读,然后由用户自己组合.Python代码排版请自行修改. 这里是索引目录: 1. 下载网站文件 2. 下载网站多个文件 1. 下载网站文件 impor ...
- SpringBoot学习记录(一)
1. Spring的Java配置方式 Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 1.1. @Configuration 和 @Bean Spring的Java配置方式是 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...