.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'][:]})

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 构建samba文件共享服务器_家庭文件服务器搭建方案

    构建samba文件共享服务器_家庭文件服务器搭建方案本文主要讲述如何使用Samba软件在Linux系统上搭建局域网中可以访问的文件共享服务器。

    2022年9月24日
    0
  • 优化算法学习(LM算法)

    优化算法学习(LM算法)LM算法可以理解为**Gauss-Newton算法与最速下降法的结合**

    2022年10月1日
    0
  • 区块链P2P网络协议演进过程[通俗易懂]

    区块链P2P网络协议演进过程[通俗易懂]区块链是以加密机制、储存机制、共识机制等多种技术组成的分布式系统,可以在无中心服务器的情况下实现相互信任的点对点交易功能。区块链最大的特点是去中心化和分布式,区块链共识机制使得参与节点共同为系统提供服务,实现中心化系统中类似金融中介机构的功能。共识机制是网络大部分节点在约定时间段内对交易状态达成相同的确认,其中共识性通过工作量证明(POW)、权益证明(POS)、实用拜占庭容错(PBFT)等多种共识算法实现。而一致性则要求大部分节点在约定时间段内保持数据内容一致,从而利用共识算法实现共识。传统中心化网络系统需

    2022年10月8日
    0
  • Java单元测试框架 JUnit

    Java单元测试框架 JUnit

    2021年11月18日
    36
  • java中的maven_maven创建web项目

    java中的maven_maven创建web项目一、前言早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不知所云。于是又去查看maven的官方网站,总算是有所了解,但一旦动手实际操作却又雾里看花。唉,没办法,就只有一遍一遍的动手尝试,经过种种磨难总算是有一点眉…

    2022年9月8日
    0
  • idea2021.8.4激活码(JetBrains全家桶)

    (idea2021.8.4激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html9071407CR5-eyJsaWN…

    2022年3月22日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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