精华内容
参与话题
问答
  • 本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。 ...

    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档

    h5py简单介绍

    h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集),下面来看下如何创建组和数据集。

    1. 创建一个h5py文件
     

    import h5py
    #要是读取文件的话,就把w换成r
    f=h5py.File("myh5py.hdf5","w")

    在当前目录下会生成一个myh5py.hdf5文件

    2. 创建dataset数据集

    import h5py 
    f=h5py.File("myh5py.hdf5","w") 
    #deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型 d1=f.create_dataset("dset1", (20,), 'i') 
    for key in f.keys(): 
        print(key) 
        print(f[key].name) 
        print(f[key].shape) 
        print(f[key].value) 
        输出: dset1 /dset1 (20,) [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
    

    这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。

    import h5py 
    import numpy as np 
    f=h5py.File("myh5py.hdf5","w") 
    d1=f.create_dataset("dset1",(20,),'i') 
    #赋值 
    d1[...]=np.arange(20) 
    #或者我们可以直接按照下面的方式创建数据集并赋值 
    f["dset2"]=np.arange(15) 
    for key in f.keys(): 
        print(f[key].name) 
        print(f[key].value) 
    输出:
    /dset1 
    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] 
    /dset2 
    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
    

    如果我们有现成的numpy数组,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data。

    import h5py
    import numpy as np 
    f=h5py.File("myh5py.hdf5","w") 
    a=np.arange(20) 
    d1=f.create_dataset("dset1",data=a) 
    for key in f.keys(): 
        print(f[key].name) 
        print(f[key].value) 
    输出: 
    /dset1 
    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
    

    现在把这几种创建的方式混合写下。看下面的代码

    import h5py 
    import numpy as np 
    f=h5py.File("myh5py.hdf5","w") 
    #分别创建dset1,dset2,dset3这三个数据集 
    a=np.arange(20) 
    d1=f.create_dataset("dset1",data=a) 
    
    d2=f.create_dataset("dset2",(3,4),'i') 
    d2[...]=np.arange(12).reshape((3,4)) 
    
    f["dset3"]=np.arange(15) 
    
    for key in f.keys(): 
        print(f[key].name) 
        print(f[key].value) 
    输出: 
    /dset1 
    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] 
    /dset2 
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]] 
    /dset3 
    [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14]
    

    3. 创建group组

    import h5py 
    import numpy as np 
    f=h5py.File("myh5py.hdf5","w") 
    #创建一个名字为bar的组 
    g1=f.create_group("bar") 
    
    #在bar这个组里面分别创建name为dset1,dset2的数据集并赋值。 
    g1["dset1"]=np.arange(10) 
    g1["dset2"]=np.arange(12).reshape((3,4)) 
    for key in g1.keys(): 
        print(g1[key].name) 
        print(g1[key].value) 
    输出: 
    /bar/dset1 
    [0 1 2 3 4 5 6 7 8 9] 
    /bar/dset2 
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    

    注意观察数据集dset1和dset2的名字是不是有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是/+名字,现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。
     

    import h5py 
    import numpy as np 
    f=h5py.File("myh5py.hdf5","w") 
    
    #创建组bar1,组bar2,数据集dset 
    g1=f.create_group("bar1") 
    g2=f.create_group("bar2") 
    d=f.create_dataset("dset",data=np.arange(10)) 
    
    #在bar1组里面创建一个组car1和一个数据集dset1。 
    c1=g1.create_group("car1") 
    d1=g1.create_dataset("dset1",data=np.arange(10)) 
    
    #在bar2组里面创建一个组car2和一个数据集dset2 
    c2=g2.create_group("car2") 
    d2=g2.create_dataset("dset2",data=np.arange(10)) 
    
    #根目录下的组和数据集 print(".............") 
    for key in f.keys(): 
        print(f[key].name) 
    
    #bar1这个组下面的组和数据集 
    print(".............") 
    for key in g1.keys(): 
        print(g1[key].name) 
    
    #bar2这个组下面的组和数据集 
    print(".............") 
    for key in g2.keys(): 
        print(g2[key].name) 
    
    #顺便看下car1组和car2组下面都有什么,估计你都猜到了为空。 
    print(".............") 
    print(c1.keys()) 
    print(c2.keys()) 
    输出: 
    ............. 
    /bar1 
    /bar2 
    /dset 
    ............. 
    /bar1/car1 
    /bar1/dset1 
    ............. 
    /bar2/car2 
    /bar2/dset2 
    ............. 
    [] 
    []
    

     

    展开全文
  • Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略 目录 h5py的简介 Websites Installation Reporting bugs h5py的安装 h5py的使用方法 1、写入数据 2、读取数据 h5py的简介 ...

    Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略

     

     

     

    目录

    h5py的简介

    Websites

    Installation

    Reporting bugs

    h5py的安装

    h5py的使用方法

    1、写入数据

    2、读取数据


     

     

     

     

    h5py的简介

          使用h5py库读写超过内存的大数据 。在简单数据的读操作中,我们通常一次性把数据全部读入到内存中。读写超过内存的大数据时,有别于简单数据的读写操作,受限于内存大小,通常需要指定位置、指定区域读写操作,避免无关数据的读写。  h5py库刚好可以实现这一功能。
          h5py的优势:速度快、压缩效率高,总之,numpy.savez和cPickle存储work或不work的都可以试一试h5py!h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集),下面来看下如何创建组和数据集。

    相关文章HDF5 for Python

     

          h5py is a thin, pythonic wrapper around the HDF5, which runs on Python 3 (3.6+).

    Websites

    Installation

    Pre-build h5py can either be installed via your Python Distribution (e.g. Continuum AnacondaEnthought Canopy) or from PyPI via pip. h5py is also distributed in many Linux Distributions (e.g. Ubuntu, Fedora), and in the MacOS package managers HomebrewMacports, or Fink.

    More detailed installation instructions, including how to install h5py with MPI support, can be found at: https://docs.h5py.org/en/latest/build.html.

    Reporting bugs

    Open a bug at https://github.com/h5py/h5py/issues. For general questions, ask on the list (https://groups.google.com/d/forum/h5py).

     

     

    h5py的安装

    pip install h5py

    安装成功!哈哈,继续学习去啦!

     

    h5py的使用方法

    后期更新……

    1、写入数据

    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)
    
    

     

    2、读取数据

    """
        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')
    

     

     

    参考文章
    h5py 必知--String存储

     

     

     

     

     

     

     

    展开全文
  • h5py基本操作

    千次阅读 2019-01-15 21:52:25
    h5py 文件介绍 一个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

    展开全文
  • python库——h5py入门讲解

    万次阅读 多人点赞 2018-05-24 10:28:39
    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。h5...

    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档


    h5py简单介绍

    h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。group中可以存放dataset或者其他的group。”键”就是组成员的名称,”值”就是组成员对象本身(组或者数据集),下面来看下如何创建组和数据集。

    1. 创建一个h5py文件

    import h5py
    #要是读取文件的话,就把w换成r
    f=h5py.File("myh5py.hdf5","w")

    在当前目录下会生成一个myh5py.hdf5文件

    2. 创建dataset数据集

    import h5py
    f=h5py.File("myh5py.hdf5","w")
    #deset1是数据集的name,(20,)代表数据集的shape,i代表的是数据集的元素类型
    d1=f.create_dataset("dset1", (20,), 'i')
    for key in f.keys():
        print(key)
        print(f[key].name)
        print(f[key].shape)
        print(f[key].value)
    
    输出:
    dset1
    /dset1
    (20,)
    [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

    这里我们仅仅创建了一个存放20个整型元素的数据集,并没有赋值,默认全是0,如何赋值呢,看下面的代码。

    import h5py
    import numpy as np
    f=h5py.File("myh5py.hdf5","w")
    
    d1=f.create_dataset("dset1",(20,),'i')
    #赋值
    d1[...]=np.arange(20)
    #或者我们可以直接按照下面的方式创建数据集并赋值
    f["dset2"]=np.arange(15)
    
    for key in f.keys():
        print(f[key].name)
        print(f[key].value)
    
    输出:
    /dset1
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
    /dset2
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]

    如果我们有现成的numpy数组,那么可以在创建数据集的时候就赋值,这个时候就不必指定数据的类型和形状了,只需要把数组名传给参数data。

    import h5py
    import numpy as np
    f=h5py.File("myh5py.hdf5","w")
    a=np.arange(20)
    d1=f.create_dataset("dset1",data=a)
    for key in f.keys():
        print(f[key].name)
        print(f[key].value)
    
    输出:
    /dset1
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]

    现在把这几种创建的方式混合写下。看下面的代码

    import h5py
    import numpy as np
    f=h5py.File("myh5py.hdf5","w")
    #分别创建dset1,dset2,dset3这三个数据集
    a=np.arange(20)
    d1=f.create_dataset("dset1",data=a)
    
    d2=f.create_dataset("dset2",(3,4),'i')
    d2[...]=np.arange(12).reshape((3,4))
    
    f["dset3"]=np.arange(15)
    
    for key in f.keys():
        print(f[key].name)
        print(f[key].value)
    
    输出:
    /dset1
    [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19]
    /dset2
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]
    /dset3
    [ 0  1  2  3  4  5  6  7  8  9 10 
    import h5py
    import numpy as np
    f=h5py.File("myh5py.hdf5","w")
    
    #创建一个名字为bar的组
    g1=f.create_group("bar")
    
    #在bar这个组里面分别创建name为dset1,dset2的数据集并赋值。
    g1["dset1"]=np.arange(10)
    g1["dset2"]=np.arange(12).reshape((3,4))
    
    for key in g1.keys():
        print(g1[key].name)
        print(g1[key].value)
    
    输出:
    /bar/dset1
    [0 1 2 3 4 5 6 7 8 9]
    /bar/dset2
    [[ 0  1  2  3]
     [ 4  5  6  7]
     [ 8  9 10 11]]

    注意观察数据集dset1和dset2的名字是不是有点和前面的不一样,如果是直接创建的数据集,不在任何组里面,那么它的名字就是/+名字,现在这两个数据集都在bar这个group(组)里面,名字就变成了/bar+/名字,是不是有点文件夹的感觉!继续看下面的代码,你会对group和dataset的关系进一步了解。

    import h5py
    import numpy as np
    f=h5py.File("myh5py.hdf5","w")
    
    #创建组bar1,组bar2,数据集dset
    g1=f.create_group("bar1")
    g2=f.create_group("bar2")
    d=f.create_dataset("dset",data=np.arange(10))
    
    #在bar1组里面创建一个组car1和一个数据集dset1。
    c1=g1.create_group("car1")
    d1=g1.create_dataset("dset1",data=np.arange(10))
    
    #在bar2组里面创建一个组car2和一个数据集dset2
    c2=g2.create_group("car2")
    d2=g2.create_dataset("dset2",data=np.arange(10))
    
    #根目录下的组和数据集
    print(".............")
    for key in f.keys():
        print(f[key].name)
    
    #bar1这个组下面的组和数据集
    print(".............")
    for key in g1.keys():
        print(g1[key].name)
    
    
    #bar2这个组下面的组和数据集
    print(".............")
    for key in g2.keys():
        print(g2[key].name)
    
    #顺便看下car1组和car2组下面都有什么,估计你都猜到了为空。
    print(".............")
    print(c1.keys())
    print(c2.keys())
    
    输出:
    .............
    /bar1
    /bar2
    /dset
    .............
    /bar1/car1
    /bar1/dset1
    .............
    /bar2/car2
    /bar2/dset2
    .............
    []
    []
    展开全文
  • python库——h5py入门讲解

    万次阅读 多人点赞 2017-06-15 13:02:39
    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。h5...
  • h5py

    2020-09-20 21:47:48
    python库—h5py应用 命令行安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple h5py 简单介绍 h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的...
  • h5py

    千次阅读 2018-01-09 22:17:38
    1. 核心概念 一个HDF5文件是一种存放两类...在使用h5py的时候需要牢记一句话:groups类比词典,dataset类比Numpy中的数组。 HDF5的dataset虽然与Numpy的数组在接口上很相近,但是支持更多对外透明的存储特征,如数据
  • python库——h5py入门讲解

    千次阅读 2018-01-31 12:21:20
    h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和numpy的数组差不多。group是像文件夹一样的容器,它好比python中的字典,有键(key)和值(value)。gro
  • h5py使用基础笔记

    千次阅读 2018-09-25 13:27:02
    h5py文件的创建和读取,group和dataset的基本使用。
  • h5py快速入门指南

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

    千次阅读 2018-12-09 10:16:24
    本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,作者刚接触h5py,完全靠看文档自学,如果哪里说的不对,欢迎纠正!如果读者需要进一步详细的学习h5py的更多知识,请参考h5py的官方文档。 ...
  • h5py for windows64位

    2016-12-30 11:41:57
    h5py-2.6.0-cp35-cp35m-win_amd64.whl
  • 成功解决问题"h5py\h5r.pyx", line 145, in init h5py.h5r AttributeError: type object 'h5py.h5r.Reference' ha 目录 解决问题 解决方法 解决问题 File "f:\program files\python\python36\lib\...
  • 成功解决 File "h5py\h5t.pxd", line 14, in init h5py._conv (D:\Build\h5py\h5py-2.7.0\h5py\_conv.c:7539) 目录 解决问题 解决思路 解决方法 解决问题 File "h5py\h5t.pxd", line 14, in ...
  • h5py

    2017-02-20 15:12:00
    解决办法: sudo apt-get install libhdf5-dev sudo apt-get install python-h5py 转载于:https://www.cnblogs.com/ymjyqsx/p/6419673.html
  • h5py 必知--String存储

    万次阅读 多人点赞 2018-04-28 01:16:09
    1. h5py 文件介绍 一个h5py文件是 “dataset” 和 “group” 二合一的容器。 1. dataset : 类似数组组织的数据的集合,像 numpy 数组一样工作 2. group : 包含了其它 dataset 和 其它 group ,像字典一样工作 看...
  • 并行 HDF5 和 h5py

    千次阅读 2018-04-24 21:27:05
    在上一篇中我们简要介绍了 HDF5 和 h5py 的基本操作,下面我们将介绍利用 mpi4py 和 h5py 进行并行分布式的 HDF5 文件操作。 使用 mpi4py 进行一般并行文件操作在前面已经作了相应的介绍,并行 HDF5 文件的相关操作...
  • H5文件(官网) H5文件是层次数据格式第5代的版本(Hierarchical Data Format,HDF5。不与 HDF 版本 4 及早期版本兼容),它是用于存储科学数据的一种文件格式和库文件。它是由美国超级计算与应用中心研发的文件...

空空如也

1 2 3 4 5 ... 20
收藏数 14,141
精华内容 5,656
关键字:

h5py