.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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASP.NET MVC实现权限管理以及权限分配「建议收藏」

    ASP.NET MVC实现权限管理以及权限分配「建议收藏」权限管理与分配至少要有三张表然而往往难住我们的并不是数据库的设计而是后台的实现 //查询用户所具有的权限    publicListGetprenisson(intuserid){      ptestEntitiespst=newptestEntities();          stringsql

    2022年7月22日
    15
  • EXT 4 文件系统新特性

    EXT 4 文件系统新特性

    2021年8月10日
    45
  • arm Linux_arch linux

    arm Linux_arch linux/* * __flush_dcache_all()* FlushthewholeD-cache. * Corruptedregisters:x0-x7,x9-x11 */ENTRY(__flush_dcache_all)//保证之前的访存指令的顺序   dsbsy                 //读cachelevelidregi

    2022年10月8日
    5
  • goland激活码3月最新在线激活

    goland激活码3月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    40
  • 阻容降压电路计算

    阻容降压电路计算阻容降压电路正确计算将交流市电转换为低压直流的常规方法是采用变压器降压后再整流滤波,当受体积和成本等因素的限制时,最简单实用的方法采用电容降压式电源。上图内容引用网上的。   /****************非常规算法,待验证**********************************/ 看到这里,很多朋友一定想说:不就是阻容么,计算容抗然后电压除以容抗不就成了

    2022年6月20日
    38
  • 时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1

    时钟周期,机器周期,指令周期的区别是什么_紫外分光吸光度大于1时钟周期     时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。    在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。     8051单片机把一个时钟

    2022年10月13日
    3

发表回复

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

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