python灵活实现Matlab结构
Implementing Matlab structure in python in a flexible way
我想在 python 中实现一个像 Matlab struct 一样灵活的结构。
我看过 Matlab structure in Python [duplicate] 但不同之处在于我想要一个灵活的结构,其中字段名称和结构的深度是事先不知道的。
所以例如在 Matlab 中你可以说:
parent.child1.grandchild1=2
parent.child1.grandchild2=3
parent.child2.grandchild1.grand-grandchild1=1
不使用字段名称初始化结构。
我想实现一个结构,只要用户(不习惯 python)想要将测量值存储在他正在使用的结构中,就可以调用该结构。因此调用可以在代码中发生多次。
我看过嵌套的 defaultdicts 但没有真正找到解决方案。
我读过 numpy 数组通常用于此目的,但如何在不损失性能的情况下不断向 numpy 数组添加字段?
任何帮助将不胜感激。
最初 MATLAB 只有 2d matrices
。这些类似于 numpy.ndarray
。实际上 numpy.matrix
是一个始终为 2d 的子class,适用于任性的 MATLAB 程序员。
MATLAB 然后添加了 cell
,有点像 python list
。也就是说,它们可以保存对任何类型对象的引用。
然后它添加了struct
。这有点像 python classes。 class 通常应该在开头定义所有属性,但通常可以通过赋值
简单地添加属性
anObject.foobar = "astring"
它接着添加了一个 class 系统,首先是作为对 struct
的粗略添加,然后再进行一些改进。但相比之下,在 python 中一切都是对象,是某些 class.
的实例
scipy.io.loadmat
可以读取 MATLAB .mat 文件(最高版本 7.3)。它 returns 一个 numpy
数组 - cell
的对象数据类型和 struct
的 structured
数组。但其中 none 具有您在 MATLAB 中看到的那种可扩展性。
我想在 python 中实现一个像 Matlab struct 一样灵活的结构。 我看过 Matlab structure in Python [duplicate] 但不同之处在于我想要一个灵活的结构,其中字段名称和结构的深度是事先不知道的。 所以例如在 Matlab 中你可以说:
parent.child1.grandchild1=2
parent.child1.grandchild2=3
parent.child2.grandchild1.grand-grandchild1=1
不使用字段名称初始化结构。 我想实现一个结构,只要用户(不习惯 python)想要将测量值存储在他正在使用的结构中,就可以调用该结构。因此调用可以在代码中发生多次。 我看过嵌套的 defaultdicts 但没有真正找到解决方案。 我读过 numpy 数组通常用于此目的,但如何在不损失性能的情况下不断向 numpy 数组添加字段? 任何帮助将不胜感激。
最初 MATLAB 只有 2d matrices
。这些类似于 numpy.ndarray
。实际上 numpy.matrix
是一个始终为 2d 的子class,适用于任性的 MATLAB 程序员。
MATLAB 然后添加了 cell
,有点像 python list
。也就是说,它们可以保存对任何类型对象的引用。
然后它添加了struct
。这有点像 python classes。 class 通常应该在开头定义所有属性,但通常可以通过赋值
anObject.foobar = "astring"
它接着添加了一个 class 系统,首先是作为对 struct
的粗略添加,然后再进行一些改进。但相比之下,在 python 中一切都是对象,是某些 class.
scipy.io.loadmat
可以读取 MATLAB .mat 文件(最高版本 7.3)。它 returns 一个 numpy
数组 - cell
的对象数据类型和 struct
的 structured
数组。但其中 none 具有您在 MATLAB 中看到的那种可扩展性。