python读取mat生成h5文件
doge C 人气:0读取mat文件生成h5文件
1. Matlab生成 .mat 文件
p = rand(1,10); q = ones(10); save('pqfile.mat','p','q')
当用python读取 pqfile.mat 这个文件时,可以通过get§, get(q) 分别获得p、q的值。
2. 读取 .mat 文件
import scipy.io as io data = io.loadmat(path) data = data.get('KeyValue')
导入的mat文件为dict类型,在load之后需要用get函数将字典内的内容读出来才可以进行下一步的处理。
读取mat文件 基于h5py库
今天有个任务需要读取mat文件中的数据,由于版本的关系,无法使用 sio.loadmat 读取数据
最后使用的方案是 h5py,下面我将记录下,我使用h5py库读取mat中两种不同数据结构的方法,这个可浪费了我不少时间,特别是第一种数据结构,嵌套多了一层,在debug的时候,只能看到他的类型是h5py.h5r.Reference,没有其他有价值的内容,幸好在网上得到启发,然后成功地读取了数据。
h5py库的api 地址 https://docs.h5py.org/en/stable/quick.html 有不懂可以多查阅哦!收获还挺大的!
两种数据结构
数据结构1
fixcell 数据结构比较复杂
一个list里面又嵌套了一个多维数据或者数据矩阵
数据结构2
sizeData数据结构相对简单
读取代码
import h5py fix_data_file_location_path = r"E:\1dataset\salObj\datasets\fixations\xxxx.mat" fix_data_file_size_path = r"E:\1dataset\salObj\datasets\fixations\xxxx.mat" fixdata_loca_file = h5py.File(fix_data_file_location_path,"r") fixdata_size_file = h5py.File(fix_data_file_size_path,"r") # 第一种数据结构的读取代码,这个例子只是读取了第一个cell中的部分数据 fixCell = fixdata_loca_file["fixCell"] # 获取第一个cell fixCell_key = fixCell[0][0] # 根据cell作为Key 从fixdata_loca_file中取值 obj = fixdata_loca_file[fixCell_key] print(obj[2][:]) # 第二种数据结构的读取代码 sizeData = fixdata_size_file["sizeData"] # 获取第一个cell sizeData[0][6] 0代表的是第一列 6代表的是第六行 height = sizeData[0][6] weight = sizeData[1][6] print(height," ",weight)
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
加载全部内容