给定索引列表,如何在没有for循环的情况下进行多次加法运算?

时间:2019-09-20 10:31:08

标签: python arrays numpy

标题可能有些混乱,我将在这里解释: 给定一个数组:

arr = np.array([1.0, 2.0])

并给出索引列表:

idxes = np.array([0, 0, 1, 0])

和要添加的号码列表:

e = np.array([0.1, 0.35, 0.5, 0.2])

我想要得到这样的结果:

arr[idxes] += e 

表示

[arr[0], arr[0], arr[1], arr[0]] + [0.1, 0.35, 0.5, 0.2]

以使arr[0]的添加量是arr[0] = arr[0] + 0.1 + 0.35 + 0.2 = 1.65的三倍,而arr[1]的添加量是arr[1] = arr[1] + 0.5 = 2.5的一倍,
如何在没有for循环的情况下直接做到这一点?

1 个答案:

答案 0 :(得分:3)

使用numpy.add.at

np.add.at(arr, idxes, e)
arr

输出:

array([1.65, 2.5 ])