【发布时间】:2020-05-02 07:21:21
【问题描述】:
背景:我正在与一位教授合作将一些 MatLab 脚本转换为 python(同时学习 python),所以我为我的菜鸟道歉。
我正在尝试在 python 中读取 .mat 文件。这是我的示例代码;
import numpy as np
from scipy.io import loadmat
isochrones = loadmat('isochrones.mat')
现在这个 .mat 文件包含一个 1x1 结构的变量“isoc”。在该变量内部还有两个结构,“e8”和“e9”。
我无法进入“e8”和“e9”小节。它们充满了更多的 1x1 变量,包括更多等等。
isoc = isochrones['isoc']
e8 = isoc['e8']
e9 = isoc['e9']
我能够做到这一点,但在那之后我被卡住了。当我打印出“e9”的内容时,它会列出其中的所有数据值,并打印包含的 dtype,其中可以看到“e9”变量中的文件。
这是一个包含 .mat 文件的 google 驱动器链接:https://drive.google.com/open?id=1kpZsHBtWll-HMd28zQ12L8v1ahWClCaM
【问题讨论】:
-
isoc是结构化数组(使用字段名称进行索引)、0d 对象 dtype 数组(使用item()或[()]进行索引)和二维数组(有些可能是 (1,1 ) 形状)。您只需检查每个级别的dtype和shape并使用适当的索引。 -
在 stackoverflow.com/questions/61542500/… 中,我展示了 MATLAB/Octave 结构与
numpy数组(和字典)的关系。根据 MATLAB 端,numpy端可能是相当复杂的数组嵌套。