我想要執行以下操作。但它喜歡直方圖操作。邏輯上添加numpy
maxIndex = 6
dst =zeros((1,6))
a =array([1,2,3,4,7,0,3,4,5,7])
index=array([1,1,1,3,3,4,4,5,5,5])
a
的長度== index
的長度,
for i in (a.size):
dst[index[i]] = dst[index[i]] + a[i]
我怎樣才能做到這一點更Python。並更有效地
我想要執行以下操作。但它喜歡直方圖操作。邏輯上添加numpy
maxIndex = 6
dst =zeros((1,6))
a =array([1,2,3,4,7,0,3,4,5,7])
index=array([1,1,1,3,3,4,4,5,5,5])
a
的長度== index
的長度,
for i in (a.size):
dst[index[i]] = dst[index[i]] + a[i]
我怎樣才能做到這一點更Python。並更有效地
如果我理解正確的,我認爲你正在尋找numpy.bincount
:
dst = numpy.bincount(index, weights=a, minlength=maxIndex)
這給我array([ 0., 6., 0., 11., 3., 16.])
作爲輸出。如果您不想手動計算maxIndex
,則可以省略函數調用中的minlength
參數,並且numpy
會爲您返回適當大小的數組。
[在Python/Numpy中一次賦值相同的數組索引](http://stackoverflow.com/questions/18273634/assigning-identical-array-indices-at-once-in-python-numpy) – Daniel
1D案例剛剛問[這裏](http://stackoverflow.com/questions/18514890/array-modified-via-two-others-in-python)。 – Daniel
此問題似乎屬於codereview.stackexchange.org –