NumPy使用索引数组将一个数组存储在另一个数组中


问题内容

我的问题是有关我想使用numpy表示的特定数组操作。

我有一个浮点数组w和一个idx与长度相同的索引数组,w我想将所有w具有相同idx值的值相加并将它们收集在一个数组中v。作为一个循环,它看起来像这样:

for i, x in enumerate(w):
     v[idx[i]] += x

有没有办法用数组操作做到这一点?我的猜测是,v[idx] += w但这不起作用,因为idx多次包含相同的索引。

谢谢!


问题答案:

numpy.bincount 为此被引入:

tmp = np.bincount(idx, w)
v[:len(tmp)] += tmp

我认为从1.6开始,您还可以将minlength传递给bincount