所以我正在写一个粒子模型。这个模拟将涉及到创建一些具有诸如种类指数(用来识别粒子类型)和三维空间中的位置/速度等属性的粒子。它还具有基于其在模拟运行期间将计算的空间中的位置的属性。我以前用一个巨大的numpy数组运行过这个模型,其中每行对应一个粒子,每列对应一个粒子属性。你知道吗
我的主要问题是:如果我要创建一个类“Particles”,这样我就可以生成代表每个粒子的实例,那么在计算速度方面是否会对性能造成影响?如果我想运行一个有一百万个粒子的程序,是将所有的数字放在一个大数组中更有效(尽管它的可读性不太好),还是使用这个类的实例,并在模拟过程中修改实例属性同样有效?或者是类很好,但是在pythonlist/NumPy数组中存储那么多类实例确实会降低执行速度?你知道吗
另外,这个程序将与python模块“Numba”一起使用,后者对数值计算进行了大量优化(特别是通过jitclasshttp://numba.pydata.org/numba-doc/latest/user/jitclass.html#numba.jitclass)。但是,我不想因为在模拟中声明变量而破坏这个模块的性能优势,因为这些变量会导致它运行效率低下。你知道吗
谢谢!你知道吗
您应该在此处使用结构化数据类型:
听起来是个好主意。你知道吗
可能会慢得多。你知道吗
使用NumPy数组的现有解决方案,可以在一个大数组中表示所有粒子:
如果将其更改为对每个粒子使用类实例,则仍可以将它们保留在NumPy数组(或列表)中,但其外观如下所示:
您需要分配四个N+1对象,而不是1(数组)。你知道吗
我会坚持原来的设计,巨型NumPy阵列,除非它是造成重大问题。你知道吗
相关问题 更多 >
编程相关推荐