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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python库——h5py入门讲解

發布時間:2025/3/15 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python库——h5py入门讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/csdn15698845876/article/details/73278120

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")
  • 1
  • 2
  • 3

在當前目錄下會生成一個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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

這里我們僅僅創建了一個存放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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

如果我們有現成的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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

現在把這幾種創建的方式混合寫下。看下面的代碼

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]
  • 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. 創建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]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

注意觀察數據集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入门讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。