事情的後續問題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