将Cell Array(.mat文件)加载到Python中

时间:2017-07-21 14:07:09

标签: python arrays matlab scipy mat

我有一个25x4x3的Cell数组,我已将其保存到.mat文件中,现在需要加载到Python中。

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

e.g。 (的伪代码

.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作为对象加载。

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

如何分配仅包含范围值“ a”的变量?是否可能这样?

x1 = mat['a', range(1, 20, 1)]