包含可变大小对象的Numpy ndarray(对象数组)

2024-05-29 07:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

晚上好

我目前正在进行一个大学一年级的项目来模拟连续介质渗流。在这个超立方体/超立方体中随机分布的超立方体/球体群的边界。在

为了加快所有这些粒子之间本质上的碰撞检测,将它们组合成连接的簇,我决定使用空间划分,这样我的程序可以很好地根据粒子的数量进行缩放。这需要我用大小均匀的长方体/立方体/超立方体来划分n维空间,并将粒子放置在相关的长方体中,这样就可以进行优化的碰撞检查,因为只需要检查位于与新粒子所在位置相邻的长方体/立方体/超立方体中的粒子。所有的细节都是用算法计算出来的。在

然而,使用一个“维数”等于所研究空间的ndarray似乎是个好主意。然后ndarray中的每个“点”本身都包含一个粒子对象数组。我们可以很容易地观察nArray中存在于新粒子周围坐标系中的对象,并循环遍历这些数组中包含的数组,这些数组本身将包含必须对其进行检查的其他粒子。然后我发现ndarray只能包含固定大小的对象,而这些粒子数组不是这样,因为它们是随着粒子随机添加到系统中而增长的。在

一个普通的数组数组(等等)是唯一的解决方案还是类似ndarray但能够容纳可变大小对象的结构存在吗?Ndarray看起来很棒,因为它是numpy的一部分,它是用编译语言c编写的,所以它会很快。此外,ndarray不需要and循环来构造数组数组(等等……)(注:空间的维数和空间划分的增量不是恒定的,因为可以添加不同半径的粒子,这意味着空间划分的正方形/立方体/超立方体的大小会发生变化)。在

速度在这个程序中是非常重要的,如果我发现算法上好的优化被糟糕的实现所破坏,那将是一种耻辱!在


Tags: 项目对象程序算法空间粒子数组大学
1条回答
网友
1楼 · 发布于 2024-05-29 07:23:18

你考虑过用kd树代替吗?kd树支持通过分割空间来快速枚举一个点的邻域(就像您在多维数组中建议的那样)。在

作为一个不错的奖励,SciPy中已经有了一个不错的kd树实现,它是NumPy:^{}的配套项目。在

相关问题 更多 >

    热门问题