小编典典

python中复杂的类似matlab的数据结构(numpy / scipy)

python

我在Matlab中目前具有以下结构的数据

item{i}.attribute1(2,j)

其中item是来自i = 1 .. n的单元格,每个单元格包含多个属性的数据结构,每个属性均具有大小为2,j的矩阵,其中j = 1 ..
m。属性的数量不是固定的。

我必须将此数据结构转换为python,但是我对numpy和python列表并不陌生。用numpy / scipy在python中构造此数据的最佳方法是什么?

谢谢。


阅读 208

收藏
2020-12-20

共1个答案

小编典典

我经常看到以下转换方法:

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
2020-12-20