当前位置: 首页 > news >正文

【h5py】 提取mat文件中的HDF5格式的数据

h5py 提取mat文件中的HDF5格式的数据

  • 使用纯Python查看数据
  • 配合Matlab后,使用Python查看数据

一、使用纯Python查看文件数据内容

原理:当HDF5存储的是struct类型数据,解析时要像一棵树,我们需要逐层次的去解析,直到打印出的是一个

<HDF5 dataset "EEG": shape (1, 66), type "|O"> 或者 <HDF5 dataset "8": shape (219, 57), type "<f8">

表明这是一个dataset数据结构,从而我们可以用特定形式访问到这些数据

  • 以获取EEG key 值的数据集数据为例,不断解析获得EEG数据
  • 重要提取信息在注释"""""中
  • 根据自己想要的数据结构进行参考
import h5py
import numpy as npfile_path = "D:/cnt.mat"	# 替换成你的文件路径with h5py.File(file_path, "r") as hpy:print(hpy.keys())	# 查看key值"""<KeysViewHDF5 ['#refs#', 'cnt']>"""cnt = hpy["cnt"]print(cnt)  #打印object信息"""<HDF5 group "/cnt" (5 members)>"""print(cnt.keys())   # 打印key值"""<KeysViewHDF5 ['EEG', 'Gender', 'HumanFactor', 'clab', 'fs']>"""EEG = cnt["EEG"]print(EEG)  # 打印EEG对象信息"""<HDF5 dataset "EEG": shape (1, 66), type "|O">这里shape = (1, 66) 表示的是EEG对应的key的value中有1个EEG数据集,里面有66个EEG数据文件"""print(EEG[0])   # 打印EEG[0]信息,这一步基本上已经获取了EEG数据集相关的信息"""<HDF5 object reference> 需要进行最后一次提取[<HDF5 object reference> <HDF5 object reference> <HDF5 object reference>... ... ...<HDF5 object reference> <HDF5 object reference> <HDF5 object reference>]"""print(EEG[0].shape)  # 打印 EEG[0] 的shape"""(66,) ,表示这是一个长度为66的一维数组"""# 遍历66个数据集for idx in range(len(EEG[0])):single_dataset = hpy[EEG[0][idx]]   #提取数据集print(single_dataset)print(np.array(single_dataset)) # 该条语句会将其数据转换成np array格式"""<HDF5 dataset "7": shape (281, 57), type "<f8">, single_dataset.shape = (281, 57)这里可直接进行遍历最终的数据data"""# for data in single_dataset:#     print(np.array(data))#     print(data.shape)"""遍历获取每个维度的数据data"""

二、使用Matlab,并迁移到Python正确解析数据

1、Matlab查看数据文件结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用Matlab,能将该大型文件HDF5的结构看的十分清楚,接下来我们使用Python解析该数据结构

2、Python直接打开该数据结构
import numpy as np
import h5pyfile_path = "D:/cnt.mat"
with h5py.File(file_path, 'r') as file:EEG = file["cnt"]["EEG"]for i in range(len(EEG[0])):dataset = file[EEG[0][i]]print(f"dataset_{i} info : {dataset}")print(np.array(dataset).shape, i)	# 将数据矩阵转换成np array形式

http://www.mrgr.cn/news/80073.html

相关文章:

  • docker搭建haproxy实现负载均衡
  • FireFox火狐浏览器企业策略禁止更新
  • MongoDB深化与微软的合作,新增人工智能和数据分析集成和微软 Azure Arc支持
  • [创业之路-186]:《华为战略管理法-DSTE实战体系》-1-为什么UTStarcom死了,华为却活了,而且越活越好?
  • 我们来学mysql -- 探讨win安装方式(安装篇)
  • python脚本将多个txt文件的内容合并为一个
  • Git-安装与常用命令
  • QT数据库(二):QSqlQueryModel实现数据查询
  • Unity 制作一个视频播放器(打包后,可在外部编辑并放置新的视频)
  • 动手学深度学习---预备知识
  • 软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护
  • 【rust杂乱笔记】
  • 20.LMAX——DDD的极致性能架构
  • 前端常用的方法
  • Electron electron-builder.yml 配置 (自定义包名,用户自定义安装目录...)
  • flink sink kafka的事务提交现象猜想
  • avue-crud 同时使用 column 与 group 的问题
  • 2024前端面试题(持续更新)
  • 力扣题目 - 935. 骑士拨号器
  • 【汇编】思考汇编中的两个基本问题
  • STM32F407+LAN8720A +LWIP +FreeRTOS ping通
  • c# 协变与抗变
  • 蓝桥杯我来了
  • 【1211更新】腾讯混元Hunyuan3D-1文/图生3D模型云端镜像一键运行
  • 微服务篇面试题
  • 案例讲解自然语言处理(NLP)