python读取并写入mat文件的方法


Posted in Python onJuly 12, 2019

先给大家介绍下python读取并写入mat文件的方法

用matlab生成一个示例mat文件:

clear;clc
matrix1 = magic(5);
matrix2 = magic(6);
save matData.mat

用python3读取并写入mat文件:

import scipy.io
data = scipy.io.loadmat('matData.mat') # 读取mat文件
# print(data.keys())  # 查看mat文件中的所有变量
print(data['matrix1'])
print(data['matrix2'])
matrix1 = data['matrix1'] 
matrix2 = data['matrix2']
print(matrix1)
print(matrix2)
scipy.io.savemat('matData2.mat',{'matrix1':matrix1, 'matrix2':matrix2}) # 写入mat文件

ps:python读取matlab写的mat文件问题以及解决办法

最近项目中需要在python下读取mat文件,遇到以下问题:

1、当数据集大小大于2GB的时候,Python就不能正确读取mat文件了。同时matlab也不能保存相应的文件,只能以 -V7.3的形式保存。具体如下:

#利用h5py读取-v7.3的.mat文件:
import h5py
dict_data = h5py.File('***.mat')  #在Python中读取的.mat为字典格式
array_data = dict_data['array_name'] 
#其中的array_name为在保存为.mat之前的真正变量名,如 MATLAB命令:save ***.mat array_name -v7.3

2、当文件以h5py写入时,最终会出现python读取到的和matlab写入的数据维度不相同的问题。比如写入的是(1000,128,128,3)但是python读取到的维度就是(128,128,3,1000)。所以需要对python读取到的文件进行转置的处理。具体如下:

data_train = h5py.File('train_order6.mat','r')
input_train = data_train['z_wrap']
input_train = np.transpose(input_train,(0,2,1)) #The shape is changed to be consistent with tensoflow [25000,128,128]->[25000,128,128]
input_train = np.expand_dims(input_train,axis=3) #[25000,128,128]->[25000,128,128,1]
label_train = data_train['z_allRegion']
label_train = np.transpose(label_train,(0,3,2,1))#The shape is changed to be consistent with tensoflow [25000,11,128,128]->[25000,128,128,11]

一般都是第一维度和最后一个维度错误,所以都是(0,3,2,1)的形式,不过为了确保正确还是建议在读取的时候显示一下图片。

3、可以在用matlab存储时,提前permute一下,python正常读取,或者matlab正常存储,python读取后transpose一下。步骤2就是matlab正常存储,python读取后transpose.

总结

以上所述是小编给大家介绍的python读取并写入mat文件的方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python代码的打包与发布详解
Jul 30 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Python用zip函数同时遍历多个迭代器示例详解
Nov 14 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
Python+tkinter模拟“记住我”自动登录实例代码
Jan 16 Python
详解Python核心对象类型字符串
Feb 11 Python
PyQt5 实现给窗口设置背景图片的方法
Jun 13 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
Python用户自定义异常的实现
Dec 25 Python
numpy数组广播的机制
Jul 12 #Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 #Python
python读取.mat文件的数据及实例代码
Jul 12 #Python
如何用Python破解wifi密码过程详解
Jul 12 #Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 #Python
Python3 itchat实现微信定时发送群消息的实例代码
Jul 12 #Python
flask应用部署到服务器的方法
Jul 12 #Python
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
简单概括PHP的字符串中单引号与双引号的区别
2016/05/07 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
复制Input内容的js代码_支持所有浏览器,修正了Firefox3.5以上的问题
2010/06/21 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
Bootstrap网格系统详解
2016/04/26 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python UIAutomator2使用超详细教程
2021/02/19 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
庆八一活动方案
2014/01/25 职场文书
社区文化建设方案
2014/05/02 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python