julia存在类似numpy里的结构化数组吗?或者怎样用连续内存保存复杂的结构数据?

求问julia是否存在类似numpy里的结构化数组的包,类似于下面的复合类型,但每个类型的各个属性的内存最好是连续的。同时可以创建数组,每个数组元素是这样的复合类型, 这样对结构体进行遍历时会更高效。
看了juliahub的StructArrays这个包,它把每个属性在连续内存存储,属性之间没啥关系,这样做的话,遍历同一数据的不同属性内存肯定不连续,性能是否会受到影响嘞?
以及不这样的话各位大佬都用什么方式存数据嘞?
感谢感谢!!! :smiley:

mutable struct TriangleInfo{IT, FT}
triID ::IT
area ::FT
verticesID ::MVector{3, IT}
verticescoor::MArray{Tuple{3, 3}, FT}
edge_v_hat ::MVector{3, FT}
edge_n_hat ::MVector{3, FT}
face_n_hat ::MVector{3, FT}
end

自己顶一下~~~

julia里如果struct里每个元素的内存大小固定的话,对应的array就是内存连续的。如果不是,则是对象指针内存连续。

1 个赞

嗯嗯谢谢,我试了下确实是指针连续,先写着看吧,不知道会影响性能不 :rofl:

连续内存的复杂数据结构在c语言层面上都难以实现吧,除非是静态的数组

就想搞个静态数组,然而又需要后期修改数据唉

如果数组不大(长度数十)可以用静态数组StaticArrays.jl,但是数组的元素不能再修改

也就是说把结构作为类型输入SArray? 我试试~