NumPy中的加权计数

问题描述 投票:4回答:1

numpy中是否可以向量化以下操作?

a = np.zeros(3)
idx = np.array([1, 0, 1])
val = np.array([1, 2, 3])
for i, v in zip(idx, val):
    a[i] += v
# a = [2, 4, 0]

以下代码无法正常工作

a = np.zeros(3)
idx = np.array([1, 0, 1])
val = np.array([1, 2, 3])
a[idx] += val
# wrong answer: a = [2, 3, 0]
python arrays numpy
1个回答
4
投票

我们可以使用np.bincount设置np.bincount作为权重:

val

实际上,这完全与问题中所分享的一样。通过在np.bincount(idx, weights=val, minlength=len(idx)).astype(int) #array([2, 4, 0]) 上添加weight,而不是:

np.bincount

与获得计数相同:

np.bincount(idx, minlength=len(idx)) 
# array([1, 2, 0], dtype=int64)

我们有for i in idx: a[i] += 1 print(a) # array([1., 2., 0.])

out[n] += weight[i]
© www.soinside.com 2019 - 2024. All rights reserved.