基于h5py的使用及數(shù)據(jù)封裝代碼
1. 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ù)集。
1.1 創(chuàng)建一個(gè)h5py文件
import h5py #要是讀取文件的話,就把w換成r f=h5py.File("myh5py.hdf5","w")
在當(dāng)前目錄下會(huì)生成一個(gè)myh5py.hdf5文件。
2. 創(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] 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] 2. hpf5用于封裝訓(xùn)練集和測試集 #============================================================ # This prepare the hdf5 datasets of the DRIVE database #============================================================ import os import h5py import numpy as np from PIL import Image def write_hdf5(arr,outfile): with h5py.File(outfile,"w") as f: f.create_dataset("image", data=arr, dtype=arr.dtype) #------------Path of the images -------------------------------------------------------------- #train original_imgs_train = "./DRIVE/training/images/" groundTruth_imgs_train = "./DRIVE/training/1st_manual/" borderMasks_imgs_train = "./DRIVE/training/mask/" #test original_imgs_test = "./DRIVE/test/images/" groundTruth_imgs_test = "./DRIVE/test/1st_manual/" borderMasks_imgs_test = "./DRIVE/test/mask/" #--------------------------------------------------------------------------------------------- Nimgs = 20 channels = 3 height = 584 width = 565 dataset_path = "./DRIVE_datasets_training_testing/" def get_datasets(imgs_dir,groundTruth_dir,borderMasks_dir,train_test="null"): imgs = np.empty((Nimgs,height,width,channels)) groundTruth = np.empty((Nimgs,height,width)) border_masks = np.empty((Nimgs,height,width)) for path, subdirs, files in os.walk(imgs_dir): #list all files, directories in the path for i in range(len(files)): #original print "original image: " +files[i] img = Image.open(imgs_dir+files[i]) imgs[i] = np.asarray(img) #corresponding ground truth groundTruth_name = files[i][0:2] + "_manual1.gif" print "ground truth name: " + groundTruth_name g_truth = Image.open(groundTruth_dir + groundTruth_name) groundTruth[i] = np.asarray(g_truth) #corresponding border masks border_masks_name = "" if train_test=="train": border_masks_name = files[i][0:2] + "_training_mask.gif" elif train_test=="test": border_masks_name = files[i][0:2] + "_test_mask.gif" else: print "specify if train or test!!" exit() print "border masks name: " + border_masks_name b_mask = Image.open(borderMasks_dir + border_masks_name) border_masks[i] = np.asarray(b_mask) print "imgs max: " +str(np.max(imgs)) print "imgs min: " +str(np.min(imgs)) assert(np.max(groundTruth)==255 and np.max(border_masks)==255) assert(np.min(groundTruth)==0 and np.min(border_masks)==0) print "ground truth and border masks are correctly withih pixel value range 0-255 (black-white)" #reshaping for my standard tensors imgs = np.transpose(imgs,(0,3,1,2)) assert(imgs.shape == (Nimgs,channels,height,width)) groundTruth = np.reshape(groundTruth,(Nimgs,1,height,width)) border_masks = np.reshape(border_masks,(Nimgs,1,height,width)) assert(groundTruth.shape == (Nimgs,1,height,width)) assert(border_masks.shape == (Nimgs,1,height,width)) return imgs, groundTruth, border_masks if not os.path.exists(dataset_path): os.makedirs(dataset_path) #getting the training datasets imgs_train, groundTruth_train, border_masks_train = get_datasets(original_imgs_train,groundTruth_imgs_train,borderMasks_imgs_train,"train") print "saving train datasets" write_hdf5(imgs_train, dataset_path + "DRIVE_dataset_imgs_train.hdf5") write_hdf5(groundTruth_train, dataset_path + "DRIVE_dataset_groundTruth_train.hdf5") write_hdf5(border_masks_train,dataset_path + "DRIVE_dataset_borderMasks_train.hdf5") #getting the testing datasets imgs_test, groundTruth_test, border_masks_test = get_datasets(original_imgs_test,groundTruth_imgs_test,borderMasks_imgs_test,"test") print "saving test datasets" write_hdf5(imgs_test,dataset_path + "DRIVE_dataset_imgs_test.hdf5") write_hdf5(groundTruth_test, dataset_path + "DRIVE_dataset_groundTruth_test.hdf5") write_hdf5(border_masks_test,dataset_path + "DRIVE_dataset_borderMasks_test.hdf5")
遍歷文件夾下的所有文件 os.walk( dir )
for parent, dir_names, file_names in os.walk(parent_dir): for i in file_names: print file_name
parent: 父路徑
dir_names: 子文件夾
file_names: 文件名
以上這篇基于h5py的使用及數(shù)據(jù)封裝代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)屏幕代碼雨效果的示例代碼
這篇文章主要介紹了如何利用Python中的Pygame模塊實(shí)現(xiàn)代碼雨效果,文中通過示例代碼介紹的非常詳細(xì),感興趣的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03python和pywin32實(shí)現(xiàn)窗口查找、遍歷和點(diǎn)擊的示例代碼
這篇文章主要介紹了python和pywin32實(shí)現(xiàn)窗口查找、遍歷和點(diǎn)擊的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04基于Python爬蟲采集天氣網(wǎng)實(shí)時(shí)信息
這篇文章主要介紹了基于Python爬蟲采集天氣網(wǎng)實(shí)時(shí)信息,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06VScode連接遠(yuǎn)程服務(wù)器上的jupyter notebook的實(shí)現(xiàn)
這篇文章主要介紹了VScode連接遠(yuǎn)程服務(wù)器上的jupyter notebook的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python中os和sys模塊的區(qū)別與常用方法總結(jié)
這篇文章主要給大家介紹了關(guān)于python中os和sys模塊的區(qū)別與常用方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11Python實(shí)現(xiàn)全角半角字符互轉(zhuǎn)的方法
大家都知道在自然語言處理過程中,全角、半角的的不一致會(huì)導(dǎo)致信息抽取不一致,因此需要統(tǒng)一。這篇文章通過示例代碼給大家詳細(xì)的介紹了Python實(shí)現(xiàn)全角半角字符互轉(zhuǎn)的方法,有需要的朋友們可以參考借鑒,下面跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11python發(fā)送郵件功能實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了python發(fā)送郵件功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07使用Python的pencolor函數(shù)實(shí)現(xiàn)漸變色功能
這篇文章主要介紹了使用Python的pencolor函數(shù)實(shí)現(xiàn)漸變色功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03