2017-06-05 136 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

相关问题