我想通過指數,如第三陣列使用來自另一數組的值來改變在一個陣列中的值使用來自不同陣列的值:與numpy的陣列改變特定值+ =通過索引列表
import numpy as np
F = np.zeros((4,3)) # array I wish to change
f = np.array([[3,4,0],[0,0,1]]) # values I wish to add to F
i = np.array([2, 2]) # indices in F I wish to affect
允許使用該數據在f
for id in xrange(len(i)):
F[i[id]] += f[id]
# F[2] is now equal to np.array([ 3., 4., 1.]) because
# both values in f have been correctly added to F[2]
做+=
操作上F
上的每個索引使用值i
我假定我可以做同樣的操作在一行像這樣:
F[i] += f
# F[2] is now equal to np.array([ 0., 0., 1.])
# i expected np.array([ 3., 4., 1.])
但是這個失敗。我希望結果是np.array([ 3., 4., 1.])
如果i
過不同的指數(例如:array([0, 2])
)的列表,然後F[0]
和F[2]
會在f
被設置到適當的項目,但在這種情況下,我希望做一個+=
操作,當指標重複時,我希望結果是累積的。
在簡單的一行操作中沒有辦法做到這一點嗎?
您可以添加預期的輸出嗎? – Cleb
@Cleb,第三個Python代碼片段:「#我期待np.array([3.,4.,1。])」......但我應該在我的問題中做得更清楚。謝謝! – Fnord
@Kevin在這種情況下是的,我想要的是在F [2]上執行兩次+ =。 – Fnord