我上一个关于编写高效 python 程序的后续问题。我一直在尝试编写自己的物理模拟,并希望摆脱使用十亿个类和方法。
所以我希望能够对数据集进行计算。这是我最近的尝试:
particles = np.array([ #position, last position, velocity, mass, size
[[200,0],[200,200],[5,5],10,15], \
[[210,210],[210,210],[8,2],20,25],\
[[215,215],[195,195],[5,3],5,15], \
[[192,186],[160,160],[10,-4],30,30]])
def moveParticles(part, dt):
part[0] = part[1]
part[1] += np.multiply(part[2],dt)
我试图将每个粒子的每个属性存储在一个数组中,然后就地更新它们。在这里,我试图将速度向量乘以时间步长,然后将其添加到位置向量中。这似乎是向我表达这一点的一种自然方式,但它给了我错误:
TypeError: can't multiply sequence by non-int of type 'float'
我可以将数据写回到同一个数组中吗?我将如何去做?
我一直在阅读,并查看了诸如 numpy 的矢量化函数、itertools、map() 等之类的东西……但是我该如何将结果放回原始数组中呢?
还是在覆盖原始数组之前使用中间数组来存储结果是唯一的方法?