Python读取及保存mat文件的注意事项说明
Python读取及保存mat文件
在说明python读取mat文件之前需要强调2点:
读取的时候需要注意读出来的shape是什么样的,是否符合自己的预期,如果shape不是自己预期的那样,就需要用np.transpose(mat, [x, x, x])进行修正。
读取的时候需要注意取值范围,也就是最大值,因为在作为训练数据的时候需要首先进行归一化(避免无法收敛),而不同的mat文件的最大值是不一样的,有0-1、0-255、0-212、0-216。
python实现mat文件的读取主要有3个函数:
import scipy.io as io imgpath = r"E:\shujuji\CAVE\CAVE_mat\balloons_ms.mat" mat = io.loadmat(imgpath)['rad']
import h5py imgpath = r"E:\shujuji\CAVE\CAVE_mat\balloons_ms.mat" mat = h5py.File(imgpath, 'r')['rad']
import hdf5storage as hdf5 imgpath = r"E:\shujuji\CAVE\CAVE_mat\balloons_ms.mat" mat = hdf5.loadmat(imgpath)['rad']
这里推荐使用第三种,也就是使用hdf5storage库进行读取,原因在于前两种与保存该mat文件时所用matlab的版本有关(7.3),也就是说一个mat文件要么能用scipy.io读,要么能用h5py能读。
而hdf5storage就不存在这个问题,一般的mat文件都能读取。
再就是使用不同函数读取时的shape不一致,容易搞乱,使用hdf5storage读取的shape和cv2.imread()读取RGB时的shape一致,方便处理。
python实现mat文件的保存同样建议使用hdf5storage(好像scipy也可):
hdf5storage.savemat(r"output\balloons_ms.mat", {'cube': mat}, format='7.3')
hdf5storage.savemat(r"output\balloons_ms.mat", {'rgb': rgb}, format='7.3')使用hdf5storage保存时mat的shape是什么样的,用它读出来也就是什么样的,比较方便。
所以建议读取和保存都使用hdf5storage。
Python读取嵌套.mat文件
从网上下载的数据集可能是保存为.mat文件的,保存着很多图片
我们先来看一下本次实验所需要的.mat文件,主要结构体为dataset,包含3个字段,分别是train,test,mapping
其中test是11的

train和test下分别还有三个字段,分别是images,labels,writers
其中test下的labels是208001的

1.首先我们先加载对应的模块,并用这个模块加载对应的.mat文件
from scipy.io import loadmat X = loadmat(r"letters.mat")
注:这里的路径需要修改
2.然后读取结构体dataset
data_all = X['dataset']
3.读取结构体下test下三个字段
#此处仅读取嵌套结构体下的test,还不是存储的数据
data = data_all[0,0]['test']
print('data.shape',data.shape)
#此处读取真正存储数据
data_labels = data[0,0]['labels']
print('data_labels.shape',data_labels.shape)
结果为:

证明正确读取嵌套结构体的.mat文件
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
pytest自动化测试fixture的作用域实例化顺序及可用性
这篇文章主要介绍了pytest自动化测试中fixture的作用域、实例化顺序及可用性的详解示例有需要的朋友可以借鉴参考下,希望能够有所帮助2021-10-10
pytorch 中autograd.grad()函数的用法说明
这篇文章主要介绍了pytorch 中autograd.grad()函数的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-05-05
python使用xlsx和pandas处理Excel表格的操作步骤
python的神器pandas库就可以非常方便地处理excel,csv,矩阵,表格 等数据,下面这篇文章主要给大家介绍了关于python使用xlsx和pandas处理Excel表格的操作步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下2023-01-01
python使用Selenium和cookie绕过验证码实现登录示例代码
文章介绍了如何使用Selenium获取登录过程中的cookie信息,并通过抓包工具获取cookie,通过示例展示了如何在Dsmall和CRM系统中实现免登陆操作,总结了两种方法:一种是在获取到cookie后直接添加到当前会话中,另一种是将cookie存储到本地文件并在后续请求中使用2025-01-01


最新评论