我在Matlab中目前具有以下结构的数据
item{i}.attribute1(2,j)
其中item是来自i = 1 .. n的单元格,每个单元格包含多个属性的数据结构,每个属性均具有大小为2,j的矩阵,其中j = 1 .. m。属性的数量不是固定的。
我必须将此数据结构转换为python,但是我对numpy和python列表并不陌生。用numpy / scipy在python中构造此数据的最佳方法是什么?
谢谢。
我经常看到以下转换方法:
Matlab数组-> python numpy数组
Matlab单元格数组-> python列表
Matlab结构-> python字典
因此,在您的情况下,这将对应于包含字典的python列表,而字典本身包含numpy数组作为条目
item[i]['attribute1'][2,j]
注意
不要忘记python中的0索引!
[更新]
附加:类的使用
除了上面给出的简单转换,您还可以定义一个虚拟类,例如
class structtype(): pass
这允许以下类型的用法:
>> s1 = structtype() >> print s1.a --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-40-7734865fddd4> in <module>() ----> 1 print s1.a AttributeError: structtype instance has no attribute 'a' >> s1.a=10 >> print s1.a 10
在这种情况下,您的示例变为
>> item = [ structtype() for i in range(10)] >> item[9].a = numpy.array([1,2,3]) >> item[9].a[1] 2