事情的后续问题my last one有关编写高效的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,地图(),等...但我怎么会去把结果返回到原来的阵列?
或正在使用中间阵列覆盖去原来的唯一途径之前将结果储存?
moveParticles如何被调用? – Sinkingpoint 2013-03-18 07:51:15
请提供要求的输出。 – root 2013-03-18 07:52:14
因为你在你的数据,不同长度的名单什么'np.array'回报是D型'object'和'粒子[:,0]','粒子[:, 1]'和'粒子[:, 2]'是Python列表,而不是数组。因此,当您尝试将速度列表与“dt”浮点数相乘时会出现错误。你应该尝试在数组中存储同类数据。我喜欢下面的Balint's sanswer! – Jaime 2013-03-18 14:06:09