MATLAB struct 转化为 python

问题描述

我有一个 .mat 文件,其结构为 1x43249,有 6 个字段。第一列标记为“A”,每个单元格都是一个大小不同的方阵(即 17x17、18x18 等)。关键是,如何将 matlab 结构转换为可用的 python 数据?没有使用 matlab.engine,我只有 pandas、numpy 和 scipy.io。我可以使用 loadmat 导入数据。我最终想要获取这些数据,并且 将其导入 tensorflow。

from scipy.io import loadmat
import tensorflow as tf

data = loadmat('.../template1-lib5-eqns-CR-RESULTS-SET1-FINAL.mat')

nz = data['Graphs']['nz']
A = data['Graphs']['A']
print(nz[:,1])
print(A[:,1])

Graphs 是结构,nz 是一列,单元格 1 应该返回数字 6,但我得到的是 [array([[6]],dtype=uint8)]

打印 A 会给我:

[array([[0,1,0],[0,1],[1,0]],dtype=uint8)]

如果您需要更多信息,请告诉我。谢谢。

解决方法

我所要做的就是将所有内容上传到 Pandas 数据框中。

raw_data = loadmat(path,squeeze_me=True)
data = raw_data['Graphs']
graph_labels = pd.DataFrame()
graph_labels['perf'] = raw_data['Objective'][0:1000]
graph_labels['np'] = data['np'][0:1000]

这完成了工作,并使 matlab 中的所有内容都可用。