python 读取 mat数据

阅读: 评论:0

python 读取 mat数据

python 读取 mat数据

(1) mat4py库:

功能: 将Matlab 数据导入为基本的Python数据类型。矩阵是以行为组的存储方式(使用列表的列表)。 Matlab结构体Struct和元胞Cell 使用Python的词典表示。

Load data from MAT-file:

函数loadmat将存储在MAT-file中的变量加载为简单的Python数据结构,仅使用词典和列表对象。数值数组和cell数组 转换为以行为主的嵌套列表(lists)。压缩数组,消除只含有一个元素的数组。产生的数据结构由简单的类型组成,兼容JSON格式。

data = loadmat('datafile.mat')

Save Python data structure to a MAT-file:

savemat('datafile.mat')

下面的数据结构不支持:

超过两维的数组

复数数组

稀疏数组

函数数组

对象类

匿名函数类

(2) 使用 import scipy.io as sio

所有的元素都封装在ndarray 中。

data = sio.loadmat('train_data.mat');

data = data['data']

测试:

结构体数组的生成。分析:list – cell, dict – struct

% 用来测试 sio.loadmat 和 mat4py.loadmat

student = repmat(struct('name',[],'age',[],'sex',[],'score',[]),2,1);

student(1).name = 'xlh';

student(1).age = 22;

student(1).sex = 'male';

student(1).score = [120,1;130,0;100,1];

student(2).name = 'gyl';

student(2).age = 20;

student(2).sex = 'female';

student(2).score = [111,0;150,2;140,0];

save('student.mat','student');

disp('save student.mat over ...');

方法1:利用 mat4.py访问.mat文件:

import mat4py

student1 = mat4py.loadmat('student.mat')

student1 = student1['student']

print type(student1) #dict

print ','.join(['%s' % key for key,val in student1.iteritems()]) # age,score,name,sex

name = student1['name']

age = student1['age']

sex = student1['sex']

score = student1['score']

print name # name list

控制台输出:

age,score,name,sex

[u'xlh', u'gyl']

方法2:利用sio访问.mat文件

import scipy.io as sio

student2 = sio.loadmat('student.mat')

student2 = student2['student']

print type(student2) #numpy.ndarray

print student2.shape #(2,1) 将结构体的每一行看作是一个数组

print '----------------'

name = []

age = []

sex = []

score = []

for id1,va1 in enumerate(student2):

va2 = va1[0]

print 'type(va1)',type(va1)

print 'type(va1[0])',type(va1[0])

name.append(va2[0])

age.append(va2[1])

sex.append(va2[2])

score.append(va2[3])

print '----------------'

print name

print '----------------'

print student2

print sex[0][0]

控制台输出:

(2L, 1L)

----------------

type(va1)

type(va1[0])

type(va1)

type(va1[0])

----------------

[array([u'xlh'],

dtype='

dtype='

----------------

[[ (array([u'xlh'],

dtype='

dtype='

[130, 0],

[100, 1]], dtype=uint8))]

[ (array([u'gyl'],

dtype='

dtype='

[150, 2],

[140, 0]], dtype=uint8))]]

mat4.py 不能处理带有汉字的mat文件。例如将上面的性别’male’改成’男’,则会报错。sio 感觉用起来麻烦。

本文发布于:2024-02-04 15:59:36,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170711121656908.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   python   mat
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23