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 相关文章推荐
Linux下将Python的Django项目部署到Apache服务器
Dec 24 Python
使用Python更换外网IP的方法
Jul 09 Python
matplotlib调整子图间距,调整整体空白的方法
Aug 03 Python
pygame游戏之旅 添加键盘按键的方法
Nov 20 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
python opencv调用笔记本摄像头
Aug 28 Python
python处理excel绘制雷达图
Oct 18 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
Python3自定义json逐层解析器代码
May 11 Python
Python使用eval函数执行动态标表达式过程详解
Oct 17 Python
python基础之文件操作
Oct 24 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 MYSQL中插入当前时间
2008/04/06 PHP
浅析PHP的静态成员函数效率更高的原因
2014/06/13 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
js获取时间(本周、本季度、本月..)
2013/11/22 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
js实现城市级联菜单的2种方法
2017/06/23 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
[04:44]DOTA2 2017全国高校联赛视频回顾
2017/08/21 DOTA
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python实现从字典中删除元素的方法
2015/05/04 Python
python数据结构之图的实现方法
2015/07/08 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
3种python调用其他脚本的方法
2020/01/06 Python
西班牙在线药店:DosFarma
2020/03/28 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
目标管理责任书
2014/04/15 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
家庭困难证明
2014/10/12 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
铁路安全反思材料
2014/12/24 职场文书
员工表扬信怎么写
2015/05/05 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle