前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Kaggle竞赛】h5py库学习

【Kaggle竞赛】h5py库学习

作者头像
嵌入式视觉
发布2022-09-05 13:45:45
8240
发布2022-09-05 13:45:45
举报
文章被收录于专栏:嵌入式视觉

Contents

最近在github上学习别人开源的一些Kaggle竞赛的源码,发现很多用到h5py和shutil这两个库,所以决定深入学习下这两个库的操作。

一、Python数据存储(压缩)

(1)numpy.save , numpy.savez , scipy.io.savemat

numpy和scipy内建的数据存储方式。

(2)cPickle + gzip

cPickle是pickle内建的数据存储方式,gzip是常用的文件压缩模块。

(3)h5py

h5py是对HDF5文件格式进行读写的python包,关于h5py更多介绍与安装,参考官方网站

二,h5py库学习

2.1,h5py库了解

h5py这个库是用于HDF5二进制数据格式的python接口,而HDF5是一种针对大量数据进行组织和存储的文件格式,它包含了数据模型,库和文件格式标准。

HDF5可以让我们存储大量的数字数据,并且很容易操纵来自于Numpy库的数据。举个例子来说,就是我们可以对存储在磁盘上的多TB数据进行切片操作,就像操作Numpy数组一样方便。无论是什么样的分类和标记方式,我们都可以把成千上万的数据集也可以存储在一个文件中。

在python中处理HDF5文件依赖于h5py这个库,安装h5py包方法如下:

代码语言:javascript
复制
conda install h5py   # anconda3环境安装
pip install h5py     # Python2安装
pip3 install h5py    # Python3安装

h5py文件是存放两类对象的容器,数据集(dataset)和组(group)。

  • dataset类似数组的数据集合,和numpy的数组差不多。
  • group是类似文件夹一样的容器,可以包含dataset和其他groups,好比python中的字典,有键(key)和值(value)。

使用h5py要记住的最基本的事情就是:

Groups就像字典(dictionaries)一样工作,而datasets像Numpy数组(arrays)一样工作!

2.2,文件对象(File Objects)

HDF5文件通常像标准的Python文件对象一样工作。它们支持r/w/等工作模式,并且会在不再使用时关闭。在HDF5文件中没有文本和二进制的概念。下面代码是创建HDF5文件的用法:

代码语言:javascript
复制
import h5py
f = h5py.File("mytestfile.hdf5", "w") # 在当前目录下会生成一个mytestfile.hdf5文件

文件名可以是字节字符串或unicode字符串。

python文件类对象(这是2.9版本才有的功能)

File函数的第一个参数除了是文件名字符串,也可以是Python中的类文件对象,比如io.BytesIo和tempfile.TemporaryFile实例,这是创建HDF5文件的快捷方式,比如我们在测试和网络中发送消息就可以这样使用。

当使用内存中的数据对象时,比如io.BytesIO,数据的写入也会相应占用内存的。如果要编写大量数据,更好的选择可能是使用tempfile中的函数将临时数据存储在磁盘上。代码实例如下:

代码语言:javascript
复制
"""Create an HDF5 file in memory and retrieve the raw bytes

    This could be used, for instance, in a server producing small HDF5
    files on demand.
"""
import io
import h5py

bio = io.BytesIO()    # 创建BytesIO对象
with h5py.File(bio) as f:
    f['dataset'] = range(10)

data = bio.getvalue() # data是一个常规的Python字节对象。
print("Total size:", len(data))
print("First bytes:", data[:10])

2.3,组(Groups)

组是HDF5文件组织的容器机制之一。从Python编程的角度来看,组(Groups)的工作方式有点像字典(dictionaries)。在这种情况下,“keys”是组成员的名称,“values”是成员本身(组Group和数据集Datasets)对象。

File对象作为HDF5根组具有双重功能,并作为文件的入口点:

四,参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Python数据存储(压缩)
  • 二,h5py库学习
    • 2.1,h5py库了解
      • 2.2,文件对象(File Objects)
        • python文件类对象(这是2.9版本才有的功能)
      • 2.3,组(Groups)
      • 四,参考资料
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档