2017-07-21 154 views
2

我有一个25x4x3单元阵列,我已经保存到一个.mat文件中,现在需要加载到Python中。将单元阵列(.mat文件)加载到Python中

我很熟悉一个简单的.mat文件,但是作为Python的新手,这个问题有点过头了。 25维和4维表示我需要在代码中稍后调用的整数。单元格数组中的3维包含日期时间数组的列表,数据以及该数据的更多字符数组标签。

例如(

.mat(1,1,1) = datetime arrays; 
.mat(1,1,2) = data corresponding to datetime arrays; 
.mat(1,1,3) = labels for each column in that data. 

很显然,我需要这与loadmat('.mat')加载到Python的,然后我感到困惑,因为我的变量浏览器不会显示在.MAT文件。我不知道如何挑选内容,以正确地转换datettime指数相应地,数字浮动等。

任何指导,将不胜感激!

现在我只是有:

filemat = 'Pdata.mat' 
Pdata = sio.loadmat(filemat) 

它加载.MAT为对象,从我可以告诉。

+0

'Pdata'应该是一个字典,'Pdata ['mat']'应该是编码你的'mat'单元格的对象。因为它来自具有混合数据的“cell”,它不会是一个简单的'numpy'数组数组。以前的'loadmat'问题已经演示了如何从这些结构中提取信息(参见侧栏)。你可能不得不向我们展示变量(如果它不太大)。 – hpaulj

+0

我沿着这一行的最后一个答案:https://stackoverflow.com/a/42258001/901925;或者https://stackoverflow.com/questions/32723802/scipy-and-preserving-mat-file-mat-matlab-data-file-structure – hpaulj

回答

1

你快到了。

首先让我建立一些样本MATLAB数据:

a = num2cell(rand(25,4,3)); 
a{13} = 'abc'; 
save('/tmp/tmp4Python.mat','a') 

现在加载它在Python

import scipy.io 
mat = scipy.io.loadmat('/tmp/tmp4Python.mat') 

,并指定变量

a = mat['a'] 

现在,如果我们想访问'abc'字符串我们这样做(注意,Python索引从0开始,而MATLAB索引开始于1):

a[12][0][0]