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比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python中文件的读取和写入操作
Apr 27 Python
详解Python logging调用Logger.info方法的处理过程
Feb 12 Python
python中open函数的基本用法示例
Sep 07 Python
Python完全识别验证码自动登录实例详解
Nov 24 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
python的slice notation的特殊用法详解
Dec 27 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
如何基于Python实现自动扫雷
Jan 06 Python
tensorflow 重置/清除计算图的实现
Jan 19 Python
Python如何存储数据到json文件
Mar 09 Python
python简单实现插入排序实例代码
Dec 16 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
基于JQuery实现异步刷新的代码(转载)
2011/03/29 Javascript
jquery图片不完全按比例自动缩小的简单代码
2013/07/29 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
python安装以及IDE的配置教程
2015/04/29 Python
Python 多线程不加锁分块读取文件的方法
2018/12/11 Python
详解python实现小波变换的一个简单例子
2019/07/18 Python
Python3离线安装Requests模块问题
2019/10/13 Python
python+opencv边缘提取与各函数参数解析
2020/03/09 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
餐饮营销方案
2014/02/23 职场文书
怀念母亲教学反思
2014/04/28 职场文书
趣味运动会策划方案
2014/06/02 职场文书
领导干部作风建设工作总结
2014/10/23 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
学生个人评语大全
2015/01/04 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
初中毕业感言300字
2015/07/31 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers