python读取并写入mat文件的方法

先给大家介绍下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文件的方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Python使用matplotlib实现的图像读取、切割裁剪功能示例

    本文实例讲述了Python使用matplotlib实现的图像读取.切割裁剪功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf-8') import matplotlib.pylab as plt # 加载图像 im = plt.imread("C:/4.png") print(im.shape) # (y轴像素点数, x轴像素点数,图像通道数) def

  • Python读取mat文件,并保存为pickle格式的方法

    这两天在搞Theano,要把mat文件转成pickle格式载入Python. Matlab是把一维数组当做n*1的矩阵的,但Numpy里还是有vector和matrix的区别,Theano也是对二者做了区分. 直接把代码贴出来吧,好像也没什么可讲的 = = from scipy.io import loadmat import numpy, cPickle data_dict=loadmat(r'E:\dataset\CIFAR10\CIFAR10_small.mat') #need an r!

  • Python第三方库h5py_读取mat文件并显示值的方法

    mat数据格式是Matlab默认保存的数据格式.在Python中,我们可以使用h5py库来读取mat文件. >>> import h5py >>> data = h5py.File("**.mat") >>> test = data["digitStruct/name"] #<HDF5 dataset "name": shape (13068, 1), type "|O&quo

  • python读取.mat文件的数据及实例代码

    首先导入scipy的包 from scipy.io import loadmat 然后读取 m = loadmat("F:/__identity/activity/论文/data/D001.mat") 注意这里m是一个dict数据结构 >>> m {'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Aug 15 22:16:43 2011', '__globals__': [],

  • Python读取mat文件,并转为csv文件的实例

    初学Python,遇到需要将mat文件转为csv文件,看了很多博客,最后找到了解决办法,代码如下: #方法1 from pandas import Series,DataFrame import pandas as pd import numpy as np import h5py datapath = 'E:/workspacelxr/contem/data.mat' file = h5py.File(datapath,'r') file.keys() def Print(name):prin

  • python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法

    1. test.txt文件,数据以逗号分割,第一个数据为x坐标,第二个为y坐标,数据如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,42 2. python部分代码 #!/usr/bin/python # coding: utf-8 import matplotlib.pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParams['font.family'] = 'sans-ser

  • python读取并写入mat文件的方法

    先给大家介绍下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['ma

  • python读取和保存mat文件的方法

    目录 一.mat文件 二.python中读取mat文件 1.读取文件 2.保存文件 首先我们谈谈MarkDown编辑器,我感觉些倒是挺方便的,因为用惯了LaTeX,对于MarkDown还是比较容易上手的,但是我发现,MarkDown中有这样几个问题一直没能找到具体的解决方法: 图片大小的问题.在LaTeX中我们可以调整图片的大小,以适应整个文本:字体,字号大小的设置.在MarkDown里面标题倒是挺大的,但是正文却显得太小,不是很喜欢里面的字体. 主要发现上面两个问题导致编辑出来的文本挺难看.

  • Python实现读取及写入csv文件的方法示例

    本文实例讲述了Python实现读取及写入csv文件的方法.分享给大家供大家参考,具体如下: 新建csvData.csv文件,数据如下: 具体代码如下: # coding:utf-8 import csv # 读取csv文件方式1 csvFile = open("csvData.csv", "r") reader = csv.reader(csvFile) # 返回的是迭代类型 data = [] for item in reader: print(item) dat

  • 一文搞懂Python读取text,CSV,JSON文件的方法

    目录 前言 打开文件 Python 中的文件读取模式 读取文本文件 读取 CSV 文件 读取 JSON 文件 总结 前言 文件是无处不在的,无论我们使用哪种编程语言,处理文件对于每个程序员都是必不可少的 文件处理是一种用于创建文件.写入数据和从中读取数据的过程,Python 拥有丰富的用于处理不同文件类型的包,从而使得我们可以更加轻松方便的完成文件处理的工作 本文大纲: 使用上下文管理器打开文件 Python 中的文件读取模式 读取 text 文件 读取 CSV 文件 读取 JSON 文件 打开

  • python 读取、写入txt文件的示例

    写入文件 使用open()函数和write()函数 但是有两种写法,分别是'a'和'w' 'a' 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,会接着已有的内容的后面写入 with open('D:\\test.txt','a',encoding='utf-8') as f: text = '\n奔涌吧,后浪' f.write(text) 程序运行前: 程序运行后: 'w' 表示写入文件 若无该文件会直接创建一个 如果存在这个文件,里面的内容会被后面写入的内容替换掉 with ope

  • Python读取和存储yaml文件的方法

    YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写.在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言). YAML 的语法和其他高级语言类似,并且可以简单表达清单.散列表,标量等数据形态.它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构.各种配置文件.倾印调试内容.文件大纲(例如:许多电子邮件标题格式和YAML

  • 详解python读取matlab数据(.mat文件)

    我们都知道,matlab是一个非常好用的矩阵计算分析软件,然额,matlab自带的绘图效果极为锯齿,所以,这里分享一个在python中读取matlab处理后的数据.mat文件. 1.首先,我们这里先打开matlab,随便在命令行窗输入两个变量, matlab_x=1:0.01:10; matlab_y=sin(matlab_x); 2.计算处理后,matlab右边的工作区会有两个变量值,分别为matlab_y.matlab_x 3.然后,我们将鼠标放置在工作区空白位置右键,选择保存,也可以在工作

  • Python基于csv模块实现读取与写入csv数据的方法

    本文实例讲述了Python基于csv模块实现读取与写入csv数据的方法.分享给大家供大家参考,具体如下: 通过csv模块可以轻松读取格式为csv的文件,而且csv模块是python内置的,不需要下载就可以直接用. 一.准备csv文件 文件名是 e:\t.csv,文件内容: org_id,org_name,state,emp_id 1,销售1,'1',123 2,销售2,'0',321 3,销售3,'1',231 1,,'1',1234 二.读取csv数据 代码非常简单: # -*- coding

  • 详解Python读取和写入操作CSV文件的方法

    目录 什么是 CSV 文件? 内置 CSV 库解析 CSV 文件 读取 CSV 文件csv 将 CSV 文件读入字典csv 可选的 Python CSV reader参数 使用 csv 写入文件 从字典中写入 CSV 文件csv 使用 pandas 库解析 CSV 文件 pandas 读取 CSV 文件 pandas 写入 CSV 文件 最流行的数据交换格式之一是 CSV 格式.是需要通过键盘和控制台以外的方式将信息输入和输出的程序,通过文本文件交换信息是在程序之间共享信息的常用方法. 这里带和

  • python geopandas读取、创建shapefile文件的方法

    shapefile是GIS中非常重要的一种数据类型,在ArcGIS中被称为要素类(Feature Class),主要包括点(point).线(polyline)和多边形(polygon).作为一种十分常见的矢量文件格式,geopandas对shapefile提供了很好的读取和写出支持,其DataFrame结构相当于GIS数据中的一张属性表,使得可以直接操作矢量数据属性表,使得在python中操作地理数据更方便.本文给大家介绍下用Python脚本中对Shapefile文件(.shp,.shx,.d

随机推荐