gpt4 book ai didi

python - NumPy 中的加权计数

转载 作者:行者123 更新时间:2023-12-03 23:06:52 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Numpy sum elements in array based on its value

(2 个回答)


去年关闭。




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]

最佳答案

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

np.bincount(idx, weights=val, minlength=len(idx)).astype(int)
#array([2, 4, 0])

这实际上与问题中的共享完全相同。通过添加 weightnp.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] :
for i, v in zip(idx, val):
a[i] += v

print(a)
# array([2., 4., 0.])

关于python - NumPy 中的加权计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62022686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com