2017-06-05 104 views
1

我想在一個二維數組的每一行中精確地遞減一個元素,給定一些索引,每行一個索引。所以基本上我想下面要矢量:按列索引修改numpy數組的每一行中的一個元素

for row, col in enumerate(indices): 
    array[row,col] -= 1 

我可以選擇我想用numpy.choose修改的元素,但不幸的是隨後這些元素只是被複制。或者換句話說,這樣的事情不工作:

selection = np.choose(indices, array.T) 
selection -= 1 

回答

1

使用integer array indexing一個量化的訪問,從而分配 -

array[np.arange(len(indices)), indices] -= 1 
+0

酷。我想我們無法擺脫範圍? – purefanatic

+0

不,我們不能擺脫它。創建這樣一個範圍數組實際上並不昂貴。 – Divakar

相關問題