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中字典dict常用操作方法实例总结
Apr 04 Python
利用Python中的输入和输出功能进行读取和写入的教程
Apr 14 Python
Python可变参数用法实例分析
Apr 02 Python
Python实现列表删除重复元素的三种常用方法分析
Nov 24 Python
JavaScript实现一维数组转化为二维数组
Apr 17 Python
Python面向对象程序设计示例小结
Jan 30 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
Feb 07 Python
python统计文章中单词出现次数实例
Feb 27 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
python 如何快速复制序列
Sep 07 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
php下实现折线图效果的代码
2007/04/28 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php两种无限分类方法实例
2015/04/21 PHP
Thinkphp自定义生成缩略图尺寸的方法
2019/08/05 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
2014/03/06 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
javascript实现表单验证
2016/01/29 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
Mac下安装vue
2018/04/11 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
2018/06/01 Javascript
React key值的作用和使用详解
2018/08/23 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
微信小程序实现购物车小功能
2020/12/30 Javascript
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python字符串拼接六种方法介绍
2017/12/18 Python
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
pip安装python库的方法总结
2019/08/02 Python
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
MYSQL相比于其他数据库有哪些特点
2013/07/19 面试题
2016年百日安全生产活动总结
2016/04/06 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
Vue深入理解插槽slot的使用
2022/08/05 Vue.js