【发布时间】:2016-12-21 23:26:14
【问题描述】:
这与我的最后一个问题有关,可以在here 找到。我正在处理的列表类似于我在该链接中描述为 markerList 的列表 - 所以是一个具有三个级别的列表。我需要将此信息保存为 .mat 文件,但我无法将其保存为正确的类型。使用 scipy.io.savemat 时,它将列表保存为 200x40x2 的单个,当它应该是一组 200 个单元格时,每个单元格包含一个 40x2 单元格。
我用来保存的代码是:
matdict = dict(markers = (markerList), sorted = (finalStack))
scipy.io.savemat('C:\pathname\\sortedMarkers.mat', matdict)
让我感到困惑的是,它以正确的格式保存 markerList(1x200 单元格,每个单元格大小不一),但不是 finalStack(保存为 200 x 40 x 2 单个)。最重要的是,在我弄清楚这段代码的其余部分之前,它会正确保存 finalStack - 这让我认为当它保存的数据大小不统一时,它可能会保存为一个单元格。 (finalStack 的大小是一致的;markerList 不是。)
有没有办法将这种复杂的数据结构保存为 .mat 文件?
【问题讨论】:
-
我要问一下,只是为了确认这不是XY Problem 的情况,你会在Matlab 中使用它吗?还是您只是使用
scipy.io.savemat作为保存python 工作区的通用库?因为如果是后者,还有更好的选择。 -
但是使用
savemat在您期望的 (20,) 数组 (40,2) 数组的位置保存 (200,40,2) 数组不是问题。如果我的诊断是正确的,那么 numpy 如何将数组列表转换为数组是一个问题。 -
Tasos- 这不是 XY 问题。基本上与我一起工作的每个人都使用 Matlab,并且单元格数组与我所知道的嵌套列表最相似。此外,一旦以适当的格式保存数据,我已经编写了脚本来批处理我的数据(不是不能重做的东西,但仍然是动力)。在保存大量这样的嵌套数据时,任何其他格式都显得非常庞大和笨拙。
标签: python python-2.7 scipy