日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

[Python学习笔记]h5py入门讲解

發(fā)布時間:2025/3/15 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Python学习笔记]h5py入门讲解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文只是簡單的對h5py庫的基本創(chuàng)建文件,數(shù)據(jù)集和讀取數(shù)據(jù)的方式進(jìn)行介紹,作者剛接觸h5py,完全靠看文檔自學(xué),如果哪里說的不對,歡迎糾正!如果讀者需要進(jìn)一步詳細(xì)的學(xué)習(xí)h5py的更多知識,請參考h5py的官方文檔。
h5py簡單介紹
h5py文件是存放兩類對象的容器,數(shù)據(jù)集(dataset)和組(group),dataset類似數(shù)組類的數(shù)據(jù)集合,和numpy的數(shù)組差不多。group是像文件夾一樣的容器,它好比python中的字典,有鍵(key)和值(value)。group中可以存放dataset或者其他的group。”鍵”就是組成員的名稱,”值”就是組成員對象本身(組或者數(shù)據(jù)集),下面來看下如何創(chuàng)建組和數(shù)據(jù)集。

  • 創(chuàng)建一個h5py文件
  • import h5py
    #要是讀取文件的話,就把w換成r
    f=h5py.File(“myh5py.hdf5”,“w”)
    1
    2
    3
    在當(dāng)前目錄下會生成一個myh5py.hdf5文件

  • 創(chuàng)建dataset數(shù)據(jù)集
  • import h5py
    f=h5py.File(“myh5py.hdf5”,“w”)
    #deset1是數(shù)據(jù)集的name,(20,)代表數(shù)據(jù)集的shape,i代表的是數(shù)據(jù)集的元素類型
    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]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    這里我們僅僅創(chuàng)建了一個存放20個整型元素的數(shù)據(jù)集,并沒有賦值,默認(rèn)全是0,如何賦值呢,看下面的代碼。

    import h5py
    import numpy as np
    f=h5py.File(“myh5py.hdf5”,“w”)

    d1=f.create_dataset(“dset1”,(20,),‘i’)
    #賦值
    d1[…]=np.arange(20)
    #或者我們可以直接按照下面的方式創(chuàng)建數(shù)據(jù)集并賦值
    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]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    如果我們有現(xiàn)成的numpy數(shù)組,那么可以在創(chuàng)建數(shù)據(jù)集的時候就賦值,這個時候就不必指定數(shù)據(jù)的類型和形狀了,只需要把數(shù)組名傳給參數(shù)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]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    現(xiàn)在把這幾種創(chuàng)建的方式混合寫下。看下面的代碼

    import h5py
    import numpy as np
    f=h5py.File(“myh5py.hdf5”,“w”)
    #分別創(chuàng)建dset1,dset2,dset3這三個數(shù)據(jù)集
    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]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    3. 創(chuàng)建group組

    import h5py
    import numpy as np
    f=h5py.File(“myh5py.hdf5”,“w”)

    #創(chuàng)建一個名字為bar的組
    g1=f.create_group(“bar”)

    #在bar這個組里面分別創(chuàng)建name為dset1,dset2的數(shù)據(jù)集并賦值。
    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]]
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    注意觀察數(shù)據(jù)集dset1和dset2的名字是不是有點和前面的不一樣,如果是直接創(chuàng)建的數(shù)據(jù)集,不在任何組里面,那么它的名字就是/+名字,現(xiàn)在這兩個數(shù)據(jù)集都在bar這個group(組)里面,名字就變成了/bar+/名字,是不是有點文件夾的感覺!繼續(xù)看下面的代碼,你會對group和dataset的關(guān)系進(jìn)一步了解。

    import h5py
    import numpy as np
    f=h5py.File(“myh5py.hdf5”,“w”)

    #創(chuàng)建組bar1,組bar2,數(shù)據(jù)集dset
    g1=f.create_group(“bar1”)
    g2=f.create_group(“bar2”)
    d=f.create_dataset(“dset”,data=np.arange(10))

    #在bar1組里面創(chuàng)建一個組car1和一個數(shù)據(jù)集dset1。
    c1=g1.create_group(“car1”)
    d1=g1.create_dataset(“dset1”,data=np.arange(10))

    #在bar2組里面創(chuàng)建一個組car2和一個數(shù)據(jù)集dset2
    c2=g2.create_group(“car2”)
    d2=g2.create_dataset(“dset2”,data=np.arange(10))

    #根目錄下的組和數(shù)據(jù)集
    print("…")
    for key in f.keys():
    print(f[key].name)

    #bar1這個組下面的組和數(shù)據(jù)集
    print("…")
    for key in g1.keys():
    print(g1[key].name)

    #bar2這個組下面的組和數(shù)據(jù)集
    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

    []
    []
    ————————————————

    總結(jié)

    以上是生活随笔為你收集整理的[Python学习笔记]h5py入门讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。