python中.mat文件怎么读取

Python015

python中.mat文件怎么读取,第1张

python中读取mat文件

在python中可以使用scipy.io中的函数loadmat()读取mat文件,函数savemat保存文件。

1、读取文件

如上例:

1234567

#coding:UTF-8 import scipy.io as scio dataFile = 'E://data.mat'data = scio.loadmat(dataFile)

注意,读取出来的data是字典格式,可以通过函数type(data)查看。

1

print type(data)

结果显示

1

<type 'dict'>

找到mat文件中的矩阵:

1

print data['A']

结果显示

[[ 0. 0. 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0. 0.

。。。。。。。。。。。

0. 0. 0. 0. 0. 0. 0.

0.36470588 0.90196078 0.99215686 0.99607843 0.99215686 0.99215686

0.78431373 0.0627451 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0. 0.

。。。。。。。。。。。。

0.94117647 0.22745098 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0.30196078

。。。。。。。

0. 0. 0. 0. 0. 0. 0.

0. 0. 0. 0. 0. 0. 0.]]

格式为:

<type 'numpy.ndarray'>

即为numpy中的矩阵格式。

python中使用h5py对HDF5文件进行操作。

1、创建文件和数据

import h5py

import numpy as np

imgData = np.zeros((2,4))

f = h5py.File('HDF5_FILE.h5','w') #创建一个h5文件,文件指针是f

f['data'] = imgData #将数据写入文件的主键data下面

f['labels'] = np.array([1,2,3,4,5])#将数据写入文件的主键labels下面

f.close() #关闭文件

f = h5py.File('HDF5_FILE.h5','r') #打开h5文件

for key in f.keys():

print(f[key].name)

print(f[key].shape)

print(f[key].value)

输出结果:

/data

(2, 4)

[[ 0. 0. 0. 0.]

[ 0. 0. 0. 0.]]

/labels

(5,)

[1 2 3 4 5]

Process finished with exit code 0

写入读取pkl文件

1)字典类型:

import pickle

dict_data={'name':["张三","李四"]}

with open("dict_data.pkl","wb") as fo:

pickle.dump(dict_data,fo)

with open("dict_data","rb") as fo:

dict_data=pickle.load(fo,encoding='bytes')

print(dict_data.keys())

print(dict_data)

print(dict_data["name"])

结果如下:

dict_keys(['name'])

{'name': ['张三', '李四']}

['张三', '李四']

2)列表类型

import pickle

list_data=["张三","李四"]

with open ("list_data","wb") as fo:

pickle.dump(list_data,fo)

with open("list_data","rb") as fo:

pickle.load(fo,encoding='bytes')

print(list_data)

print(list_data.keys())

pirnt(list_data["name"])

mat文件

mat数据格式是Matlab的数据存储的标准格式。在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件。对于文件data.mat:

load(‘data.mat')

save('data_1.mat','A')

其中'A’表示要保存的内容。

在python读取mat文件:

1、读取文件:

import scipy.io as scio

file1='E://data.mat'

data=scio.loadmat(file1)

注意,读取出来的data是字典格式,可以通过函数type(data)查看。

print type(data)

结果显示

<type 'dict'>

找到mat文件中的矩阵:

print data['A']

结果显示

"""

Created on Sun Nov 29 16:40:18 2020

本工具主要用于mat文件的读取(matlab-v7.3格式)

主要分为3个部分:1 常规mat中的变量

                2 mat文件中的cell内部数据读取

                3 mat文件中的struct数据读取

@author: ZXY

"""

"""

1 常规mat中的变量

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./1.mat",'r')

ecg=data["ecg"].value

"""

2 mat文件中的cell内部数据读取

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./2.mat",'r')

zx1=data["ecg_all"]#找到struct的顶部

for i in range(zx1.shape[0]):

    ecg=data[zx1[i][0]].value

"""

3 mat文件中的struct数据读取

"""

import h5py

b=[]

#首先用h5py读取mat文件,并找到对应的struct 位置。

data = h5py.File("./3.mat",'r')

zx1=data["ecgpart"]#找到struct的顶部

test = data['ecgpart/data']#找到struct中要提取的子集

for i in test[:,0]: 

        ecg=zx1[i].value