You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Numpy中实现基于索引的带重复次数累加操作?

numpy重复索引累加实现方法

先看你的问题场景:

import numpy as np
nparr = np.array([10,20,30,40,50])
nparr[[1,3,3,4]] += 1
print(nparr)  # 输出:array([10, 21, 30, 41, 51])

这里索引3出现两次但只加了1,是因为numpy花式索引执行+=时,会先提取对应元素的副本,修改后再赋值回去,重复索引的修改会被覆盖,只生效一次。

要实现按索引重复次数累加,有两种常用方法:

方法一:使用np.add.at()

这是numpy专门处理重复索引原地累加的方法,直接对原数组操作,会按索引出现次数累加对应值:

import numpy as np
nparr = np.array([10,20,30,40,50])
np.add.at(nparr, [1,3,3,4], 1)
print(nparr)  # 输出:array([10, 21, 30, 42, 51])

方法二:用np.bincount()计算增量后累加

先统计每个索引的出现次数作为增量,再加到原数组上:

import numpy as np
nparr = np.array([10,20,30,40,50])
indices = [1,3,3,4]
# 计算每个索引的增量,minlength保证和原数组长度一致
increments = np.bincount(indices, minlength=len(nparr))
nparr += increments
print(nparr)  # 输出:array([10, 21, 30, 42, 51])

内容的提问来源于stack exchange,提问作者aellab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:46:14