gpt4 book ai didi

python - numpy 中是否有等效的 MATLAB accumarray?

转载 作者:太空狗 更新时间:2023-10-29 17:02:34 25 4
gpt4 key购买 nike

我正在寻找 MATLAB 的 accumarray 的快速解决方案在 NumPy 的。 accumarray 累积属于同一索引的数组元素。一个例子:

a = np.arange(1,11)
# array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
accmap = np.array([0,1,0,0,0,1,1,2,2,1])

结果应该是

array([13, 25, 17])

到目前为止我做了什么:我试过 recipe here 中的 accum 函数工作正常但速度很慢。

accmap = np.repeat(np.arange(1000), 20)
a = np.random.randn(accmap.size)
%timeit accum(accmap, a, np.sum)
# 1 loops, best of 3: 293 ms per loop

然后我尝试使用 solution here它应该工作得更快,但它不能正常工作:

accum_np(accmap, a)
# array([ 1., 2., 12., 13., 17., 10.])

有没有内置的numpy函数可以像这样进行累加?或者有其他推荐吗?

最佳答案

使用np.bincount使用 weights 可选参数。在您的示例中,您会这样做:

np.bincount(accmap, weights=a)

关于python - numpy 中是否有等效的 MATLAB accumarray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856470/

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