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中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
python简单分割文件的方法
Jul 30 Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 Python
python爬虫爬取网页表格数据
Mar 07 Python
Python实现判断给定列表是否有重复元素的方法
Apr 11 Python
python实现输入数字的连续加减方法
Jun 22 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
Python3如何对urllib和urllib2进行重构
Nov 25 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Python绘图之二维图与三维图详解
Aug 04 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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微信发送推送消息乱码的解决方法
2019/02/28 PHP
php写app用的框架整理
2019/09/29 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
JavaScript几种形式的树结构菜单
2010/05/10 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
原生js开发的日历插件
2017/02/04 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue-cli 首屏加载优化问题
2018/11/06 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
关于js陀螺仪的理解分析
2019/04/11 Javascript
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
Python登录注册验证功能实现
2018/06/18 Python
浅述python中深浅拷贝原理
2018/09/18 Python
简单了解python代码优化小技巧
2019/07/08 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
人事专员职责
2014/02/22 职场文书
买房委托公证书
2014/04/08 职场文书
实验室的标语
2014/06/20 职场文书
党员思想汇报材料
2014/12/19 职场文书
2015年效能监察工作总结
2015/04/23 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS