在 Python 中创建 Matlab 结构

Create Matlab struct in Python

我有一个问题:我想在 Python 中创建一个类似 Matlab 的结构。我需要创建的结构有两个字段:"val" 和 "sl"。它必须是 1x2 结构。 "val" 字段内部需要有两个 3x3 矩阵(例如 A 和 B),而 "sl" 字段内部需要有两个值(例如 137 和 159)。 最终的结构应该是这样的:

val    sl
3x3   137
3x3   159

在 Matlab 中的代码是:struct(1).val=A;struct(1).sl=137;struct(2).val=B;struct(2).sl=159 在 python 我试过 hval = fromarrays([[A, B], [137, 159]], names=['val', 'sl']) 但它给了我这个错误: File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/[=28= .py”,第 608 行,在 fromarrays 中 提高 ValueError("array-shape mismatch in array %d" % k)

ValueError:数组 1 中的数组形状不匹配 有谁知道如何解决这个问题?

您似乎无法将 ndarray 存储为记录的元素,因为字段需要具有相同的维度。看起来好像将 3x3 数组添加到 val 字段会使该字段的尺寸为 2x3x3,而不是存储为离散数组。

但是,您可以使用 Python dictlist 类型模拟相同类型的结构,如下所示:

struct = {
   'val': [A, B],
   'sl': [137, 138]
}

您现在可以按如下方式访问这些元素(注意参数顺序不同):

struct['val'][0] # = A
struct['sl'][1] # 138

为了保持顺序反转 dict/list 结构:

struct = [
    {'val': A, 'sl': B},
    {'val': 137, 'sl': 138},
]

struct[0]['val']  # A
struct[1]['sl'] # 138