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实现上传下载文件功能
Nov 19 Python
通过Python 接口使用OpenCV的方法
Apr 02 Python
Python通过for循环理解迭代器和生成器实例详解
Feb 16 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
安装完Python包然后找不到模块的解决步骤
Feb 13 Python
python实现翻译word表格小程序
Feb 27 Python
python seaborn heatmap可视化相关性矩阵实例
Jun 03 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 Python
Python中X[:,0]和X[:,1]的用法
May 10 Python
Python PIL按比例裁剪图片
May 11 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
星际争霸教主Flash的ID由来:你永远不会知道他之前的ID是www!
2019/01/18 星际争霸
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
php代码审计比较有意思的例子
2014/05/07 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
javascript cookie解码函数(兼容ff)
2008/03/17 Javascript
jquery实现右键菜单插件
2015/03/29 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
jQuery中toggle()函数的使用实例
2015/04/17 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
JavaScript实现为事件句柄绑定监听函数的方法分析
2017/11/14 Javascript
node解析修改nginx配置文件操作实例分析
2019/11/06 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
[08:40]Navi Vs Newbee
2018/06/07 DOTA
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
django+mysql的使用示例
2018/11/23 Python
对python中url参数编码与解码的实例详解
2019/07/25 Python
如何在django中添加日志功能
2020/02/06 Python
如何把外网python虚拟环境迁移到内网
2020/05/18 Python
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
毕业自我鉴定书
2014/03/24 职场文书
住院医师规范化培训实施方案
2014/06/12 职场文书
党支部三会一课计划
2014/09/24 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书