精华内容
下载资源
问答
  • h5py基本操作

    千次阅读 2019-01-15 21:52:25
    一个h5py文件是 “dataset” 和 “group” 二合一的容器。 dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作 group : 包含了其它 dataset 和 其它 group ,像字典一样工作 看下图: 通过上图,我们...
    1. h5py 文件介绍

    一个h5py文件是 “dataset” 和 “group” 二合一的容器。

    1. dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作
    2. group : 包含了其它 dataset 和 其它 group ,像字典一样工作

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

    1. 写入数据
      根据上面的了解,我们开始创建一个h5py文件并写入数据:
    import h5py
    
    """
        create_dataset : 新建 dataset
        create_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 的文件夹 ….

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

    1. 读取数据
    """
        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 。

    1. 总结

    前面说了 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)
    

    原文:https://blog.csdn.net/qq_34859482/article/details/80115237

    展开全文
  • H5文件(官网) H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5。不与 HDF 版本 4 及早期版本兼容),它是用于存储科学数据的一种文件格式和库文件。它是由美国超级计算与应用中心研发的文件...
     
    

    H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5。不与 HDF 版本 4 及早期版本兼容),它是用于存储科学数据的一种文件格式和库文件。它是由美国超级计算与应用中心研发的文件格式,用以存储和组织大规模数据。目前由非营利组织HDF小组提供支持。

    H5将文件结构简化成两个主要的对象类型:

    1. 数据集( dataset ),就是同一类型数据的多维数组。
    2. 组( group ),是一种容器结构,可以包含数据集和其他组。可以类比于字典,有键(key,组成员的名称)和值(value,组成员对象本身(组或者数据集))。group中可以存放dataset或者其他的group。

    在Python中,主要使用h5py模块来操作相关格式。

    • h5py模块

    # h5py模块读、写hdf5文件
    # -*- coding: utf-8 -*-
    
    import h5py
    import numpy as np
    
    #HDF5的写入:
    imgData = np.zeros((2,4))
    f = h5py.File('HDF5_FILE.h5','w')   #创建一个h5文件,文件指针是f
    f['data'] = imgData                 #将数据写入文件的主键data下面
    f['labels'] = np.array([1,2,3,4,5])            #将数据写入文件的主键labels下面
    f.close()                           #关闭文件
    
    #HDF5的读取:
    f = h5py.File('HDF5_FILE.h5','r')   #打开h5文件
    # 可以查看所有的主键
    for key in f.keys():
        print(f[key].name)
        print(f[key].shape)
        print(f[key].value)
    

    .
    .
    .
    2019-02-27 19:50:00写于太阳花咖啡馆

    展开全文
  • Python 从 mat 文件读写 到 h5py 文件

    万次阅读 2015-07-27 20:47:53
    但,针对大文件(有网友睁着直径为8848米的小眼睛说的大小的分界点在2GB)以及存储版本在“matlab-v7.3”以上的文件就拙计了,这里分享一种刚刚学到处理方式,用h5py模块,详细介绍以及Python源码详见本文。...

    【摘要】

     

    python在读写matlab文件时常用到scipy.io文件,但,针对大文件(有网友睁着直径为8848米的小眼睛说的大小的分界点在2GB)以及存储版本在“matlab-v7.3”以上的文件就拙计了,这里分享一种刚刚学到处理方式,用h5py模块,详细介绍以及Python源码详见本文。

    【正文】

     

    1、如果你的matlab的版本比较旧,保存的.mat 格式为‘-v7.3’以前的版本,可以采用:scipy.io即可。假如有一个name_box.mat,其中,box: {1x29992 cell}和name: {1x29992 cell}。我们想要读取其中的box的内容,源码如下:

     

     

    import scipy.io as sio
    boxes = sio.loadmat(’name_box.mat‘)['box'].ravel()

     

    这样boxes就是一个list,可以采用boxes[i]显示每个array的内容了,boxes.shape[0]为cell的个数

    2、如果你的matlab的版本比较新,保存的.mat格式为‘-v7.3’的版本,由于scipy.io不支持,所以要采用hdf5,arr.mat是一个m*n的矩阵文件,代码准备先对arr读入,再对 TrainSet_rotate.h5文件实现写入操作,源码如下:

     

    import h5py
    import numpy as np
    
    file = h5py.File('F:\\wfpdm\\20150702_2105\\arr.mat','r')
    arr = file['arr'][:]
    
    # h5py 用于文件读写 详细用例
    data = np.array( [222,333,444] )
    label = np.array( [0,1,0] )
    img_num = np.array( [0,1,2] )
    # 创建HDF5文件
    file = h5py.File('TrainSet_rotate.h5','w')
    # 写入
    file.create_dataset('train_set_x', data = data)
    file.create_dataset('train_set_y', data = label)
    file.create_dataset('train_set_num',data = img_num)
    file.close()
    
    # 读方式打开文件
    file=h5py.File('TrainSet_rotate.h5','r')
    # 尽管后面有 '[:]', 但是矩阵怎么进去的就是怎么出来的,不会被拉长(matlab后遗症)
    train_set_data = file['train_set_x'][:]
    train_set_y = file['train_set_y'][:]
    train_set_img_num = file['train_set_num'][:]
    file.close()

     

     

    展开全文
  • h5py包是HDF5二进制数据格式的python接口。 HDF5允许您存储大量数字数据,并且可以轻松地从NumPy操作这些数据。例如,您可以将存储在磁盘上的多TB数据集切片,就像它们是真正的NumPy数组一样。数千个数据集可以存储...

    下述内容根据官方文档翻译而来,官方文档链接如下:

    http://docs.h5py.org/en/latest/quick.html

    快速入门指南:

    h5py包是HDF5二进制数据格式的python接口。

    HDF5允许您存储大量数字数据,并且可以轻松地从NumPy操作这些数据。例如,您可以将存储在磁盘上的多TB数据集切片,就像它们是真正的NumPy数组一样。数千个数据集可以存储在一个文件中,按您的需要进行分类和标记。

    HDF5文件是两种对象的容器:数据集(类似数组的数据集合)和组(类似文件夹的容器,用于保存数据集和其他组)。使用h5py最基本的要记住的是:

    组的工作方式类似于字典,而数据集的工作方式类似于NumPy数组。

    假设有人给你发送了一个HDF5文件,mytestfile.hdf5。(要创建此文件,请参阅附录:创建文件。)你需要做的第一件事就是打开文件进行阅读:

    >>> import h5py

    >>> f = h5py.File('mytestfile.hdf5', 'r')

    文件对象是您的起点。这个文件中存储了什么?记得h5py。文件的作用类似于Python字典,因此我们可以检查键:

    >>> list(f.keys())

    ['mydataset']

    根据我们的观察,文件中有一个数据集,mydataset。让我们以数据集对象的形式检查数据集:

    >>> dset = f['mydataset']

    我们得到的对象不是一个数组,而是一个HDF5数据集。与NumPy数组一样,数据集具有形状和数据类型:

    >>> dset.shape

    (100,)

    >>> dset.dtype

    dtype('int32')

    它们还支持数组样式的切片。这就是从文件中的数据集读取和写入数据的方式:

    >>> dset[...] = np.arange(100)

    >>> dset[0]

    0

    >>> dset[10]

    10

    >>> dset[0:100:10]

    array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])

    附录:创建文件

    此时,您可能想知道mytestdata是如何被创建的。我们可以通过在初始化文件对象时将模式设置为w来创建文件。其他一些模式是a(用于读/写/创建访问)和r+(用于读/写访问)。文件访问模式及其含义的完整列表在文件对象中。

    >>> import h5py

    >>> import numpy as np

    >>> f = h5py.File("mytestfile.hdf5", "w")

    File对象有两个看起来很有趣的方法。其中之一是create_dataset,顾名思义,它创建给定形状和dtype的数据集:

    >>> dset = f.create_dataset("mydataset", (100,), dtype='i')

    文件对象是一个上下文管理器;所以下面的代码也可以工作:

    >>> import h5py

    >>> import numpy as np

    >>> with h5py.File("mytestfile.hdf5", "w") as f:

    >>> dset = f.create_dataset("mydataset", (100,), dtype='i')

    组和层次化组织

    HDF代表分层数据格式。HDF5文件中的每个对象都有一个名称,它们被安排在POSIX类型的层次结构中,用“/”做分隔。

    >>> dset.name

    u'/mydataset'

    这个系统中的文件夹称为组。我们创建的文件对象本身就是一个组,在本例中是根组,名为“/”。

    >>> f.name

    u'/'

    创建子组是通过适当命名的create_group完成的。但是我们需要先以追加模式打开文件(如果存在读/写,则以其他方式创建):

    >>> f = h5py.File('mydataset.hdf5', 'a')

    >>> grp = f.create_group("subgroup")

    所有组对象也都有create_*方法,比如File:

    >>> dset2 = grp.create_dataset("another_dataset", (50,), dtype='f')

    >>> dset2.name

    u'/subgroup/another_dataset'

    顺便说一下,您不必手动创建所有中间组。指定完整路径就可以了:

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

    >>> dset3.name

    u'/subgroup2/dataset_three'

    组支持大多数Python字典样式的接口。使用项目检索语法检索文件中的对象:

    >>> dataset_three = f['subgroup2/dataset_three']

    对组进行迭代会提供其成员的名称:

    >>> for name in f:

    ... print name

    mydataset

    subgroup

    subgroup2

    成员是否存在的测试也使用名称:

    >>> "mydataset" in f

    True

    >>> "somethingelse" in f

    False

    甚至可以使用完整路径名:

    >>> "subgroup/another_dataset" in f

    True

    还有熟悉的keys(), values(), items() 和 iter() 方法, 以及 get()。

    由于对一个组进行迭代只会产生其直接连接的成员,所以对整个文件进行迭代是使用组方法visit()和visititems()完成的,这两个方法都是可调用的:

    >>> def printname(name):

    ... print name

    >>> f.visit(printname)

    mydataset

    subgroup

    subgroup/another_dataset

    subgroup2

    subgroup2/dataset_three

    属性:

    HDF5的一个最好的特性是,您可以在它所描述的数据旁边存储元数据。所有组和数据集都支持附加的称为属性的数据位。

    属性通过attrs代理对象访问,该对象再次实现dictionary接口:

    >>> dset.attrs['temperature'] = 99.5

    >>> dset.attrs['temperature']

    99.5

    >>> 'temperature' in dset.attrs

    True

    展开全文
  • 使用h5py操作hdf5文件

    2019-09-26 20:46:00
    HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。HDF 最早由美国国家超级计算应用中心 NCSA 开发,目前在非盈利组织 HDF 小组维护下继续发展。当前流行的版本是 HDF5...
  • Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略 目录 h5py的简介 Websites Installation Reporting bugs h5py的安装 h5py的使用方法 1、写入数据 2、读取数据 h5py的简介 ...
  • Python-深度学习-学习笔记(10):对于读取h5py文件的路径问题解决 错误代码: OSError: Unable to open file (unable to open file: name = ‘datasets/train_catvnoncat.h5’, errno = 2, error message = ‘No ...
  • h5py用法

    2020-12-23 11:09:22
    一个h5py文件是 “dataset” 和 “group” 二合一的容器。 1. dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作 2. group : 包含了其它 dataset 和 其它 group ,像字典一样工作 看下图: 通过上图,...
  • h5py使用的一些操作

    2020-04-29 10:01:28
    https://stackoverflow.com/questions/31861724/deleting-hdf5-dataset-using-h5py http://www.itkeyword.com/doc/6425292363646981620/deleting-hdf5-dataset-using-h5py 读写模式的区别 mode 为...
  • h5py学习

    2020-09-28 10:14:37
    h5py学习 一、基础知识 (一)安装 【Anaconda3安装】 conda install h5py 【Miniconda安装】 enpkg h5py 【pip安装】 pip install h5py 【MacOS】:使用brew 安装 【源码安装】 安装组件:python的...
  • HDF5 文件h5py

    千次阅读 2018-04-24 21:24:36
    在上一篇中我们介绍了 caput 中另一个模块 miarray 提供的建立在 numpy array 基础上的并行分布式数组 MPIArray,其中也提到了 HDF5 文件及其操作,我们将在后面介绍并行分布式的 HDF5 相关操作,在此之前我们先介绍...
  • h5py存取简例

    2021-05-27 21:42:17
    ),scipy.io.savemat 会报错,考虑换用 h5py。 Code import numpy as np import h5py a = np.arange(12).reshape(3, 4) print("a:", a) # 保存 with h5py.File("test.h5", "w") as f: f.create_dataset("images...
  • h5py用户手册

    2017-09-26 09:34:12
    h5py是HDF5文件格式的python接口。它可以让你存储海量的数值数据,并可用NumPy轻松操作数据。一个HDF5文件是一种存放两类对象的容器:dataset和group。Dataset是类似于数组的数据集,而group是类似文件夹一样的容器...
  • h5py快速入门指南

    万次阅读 2018-10-13 13:14:42
    h5py是Python语言用来操作HDF5的模块。下面的文章主要介绍h5py的快速使用入门,翻译自h5py的官方文档:http://docs.h5py.org/en/latest/quick.html 。该翻译仅为个人学习h5py为目的,如有翻译不当之处,请速联系读者...
  • Python h5py

    2018-10-29 11:36:00
    conda install h5py 如果没有,安装命令如下: pip install h5py 2、核心概念 读取HDF5文件,假如现有一个HDF5文件test.hdf5 >>> import h5py >>> f = h5py.File("test.h...
  • Python处理HDF5文件h5py

    千次阅读 2020-07-22 12:59:36
    HDF是一种为存储和处理大容量科学数据设计的文件格式及相应库文件h5py是Python 中操作和使用 HDF5 数据的工具库,读写速度快、压缩效率高。
  • Python第三方库h5py_读取mat文件并显示值的方法mat数据格式是Matlab默认保存的数据格式。在Python中,我们可以使用h5py库来读取mat文件。>>> import h5py>>> data = h5py.File("**.mat")>>> test = data[...
  • python 3.x 环境下,使用h5py加载HDF5文件,查看keys,如下: >>> import h5py >>> f = h5py.File("a.h5",'r') >>> f.keys() 结果看不到keys: KeysView(file "a.h5" (mode r)>) 原因主要是 python2.x 和 ...
  • 并行 HDF5 和 h5py

    千次阅读 2018-04-24 21:27:05
    在上一篇中我们简要介绍了 HDF5 和 h5py 的基本操作,下面我们将介绍利用 mpi4py 和 h5py 进行并行分布式的 HDF5 文件操作。 使用 mpi4py 进行一般并行文件操作在前面已经作了相应的介绍,并行 HDF5 文件的相关操作...
  • h5py模块

    2020-03-26 12:47:27
    f=h5py.File('myfile.hdf5', 'r') HDF5和其他Python文件对象差不多,支持r/w/a的操作,在不使用时需要关闭。 r 只读,文件必须存在 r+ 读和写, 文件必须存在 w 创建文件, w-或者x 创建文件,如果存在...
  • h5py 必知--String存储

    万次阅读 多人点赞 2018-04-28 01:16:09
    一个h5py文件是 “dataset” 和 “group” 二合一的容器。 1. dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作 2. group : 包含了其它 dataset 和 其它 group ,像字典一样工作 看下图: 通过上图...
  • 深度学习之10分钟入门h5py

    千次阅读 2019-06-04 21:53:59
    目录0、前言1、HDF5 简介2、h5py 安装3、h5py 简介3.1 打开和创建 h5py 文件3.2 创建数据集3.3 创建组3.4 属性# 参考文章 0、前言 最近在看SRCNN代码的时候碰到了h5py,就查询了一下这个函数h5py.File,了解了一下...
  • 可见:Python 从 mat 文件的读写和存储 到 h5py 文件包。 详址:http://blog.csdn.net/u013630349/article/details/47090299 但是,在读取matlab文件的时候,往往不是一层 .mat 就足以解决问题的,.mat 文件中可能
  • 使用h5py保存文件时报错:TypeError: Object dtype dtype(‘O’) has no native HDF5 equivalent 因为保存的时候字典对应的值仍然是字典, file[key]=value h5py进行上述操作时,value不可以是dict字典(也有可能...
  • python的h5py读取matlab生成的.mat文件 这次希望把matlab中保存的mat文件读取到python中,本来以为是要h5py很容易可以读取,但是发现还是遇到了坑 首先,看看报错OSError: Unable to open file (File signature not ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,847
精华内容 1,538
关键字:

h5py文件操作