.h5文件的读取_python读写h5文件

.h5文件的读取_python读写h5文件**关于hdf5文件**HDF(HierarchicalDataFormat)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。详见其官方介绍:https://support.hdfgroup.org/HDF5/。Python中有一系列的工具可以操作和使用HDF5数据,这里只介绍h5py。一个HDF5文件是存储两类对象的容器,这两类对象分别为:dataset…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

**

关于hdf5文件

**

HDF(Hierarchical Data Format)指一种为存储和处理大容量科学数据设计的文件格式及相应库文件。详见其官方介绍https://support.hdfgroup.org/HDF5/

Python 中有一系列的工具可以操作和使用 HDF5 数据,这里只介绍 h5py
一个 HDF5 文件是存储两类对象的容器,这两类对象分别为:
dataset:类似数组的数据集合;
gropp;类似目录的容器,其中可以包含一个或多个 dataset 及其它的 group。
参考链接:https://www.jianshu.com/p/de9f33cdfba0

h5文件的读取

这里以我要用的模型的h5文件为例,是AudioSet数据集的一部分,论文的作者是将tfrecord格式写成了hdf5格式,因此想要读取这样格式的文件来看看里面的内容。

# python 2
#coding=utf-8
import datetime
import os
import h5py
import numpy as np

# f = h5py.File('path/filename.h5','r') #打开h5文件
f = h5py.File('E:/2018/AudioSet/bal_train.h5','r')
f.keys() #可以查看所有的主键
print([key for key in f.keys()])

运行程序后,结果有:
结果图
可以看到主键有3部分,分别为:
video_id_list, x, y

因此可以继续查看主键里面的内容,这部分直接用print语句就能实现,接在主键程序之后,这里简单举例说明一下:

print('first, we get values of x:', f['x'][:])
print('then, we get values of y:', f['y'][:])
print(f['x'][:].shape)
print(f['y'][:].shape)

运行这一部分的代码,结果有:
在这里插入图片描述
可以看到,通过print语句,得到了三个主键里面内容的大小,就我的h5文件,里面的video_id_list是一个存放了歌曲id的列表文件, x是输入的歌曲的特征文件22160是样本数目,(10,128)代表了样本是一个10×128的矩阵, y是一个标签文件,(22160,527)代表大小是22160×527,其中527是类别的数目。

可以利用io.save()函数来保存主键中的内容,。

from scipy import io
io.savemat('x.mat', { 
   'data': f['x'][:]})
io.savemat('y.mat', { 
   'data': f['y'][:]})
io.savemat('video_id_list.mat', { 
   'data': f['video_id_list'][:]})

最后,给出完整的代码:

# python 2
#coding=utf-8
from scipy import io
import os
import h5py
import numpy as np

#打开h5文件
f = h5py.File('path/filename.h5','r') 
#查看文件
f.keys() #可以查看所有的主键

print([key for key in f.keys()])
print('first, we get values of x:', f['x'][:])
print('then, we get values of y:', f['y'][:])
print(f['x'][:].shape)
print(f['y'][:].shape)

#保存数据
io.savemat('x.mat', { 
   'data': f['x'][:]})
io.savemat('y.mat', { 
   'data': f['y'][:]})
io.savemat('video_id_list.mat', { 
   'data': f['video_id_list'][:]})

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/195546.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号