python - 是否有计算部分和的 NumPy 函数?

标签 python python-3.x numpy

给定一个一维数组 A 和一个 n 唯一和排序索引 idx 的列表,我想计算的总和A[idx[i]:idx[i + 1]]i = 0n - 1。基于 for 的解决方案是:

S = [A[idx[i]:idx[i + 1]].sum() for i in range(n - 1)]

但我想如果 n 很大,因为它是在 Python 级别完成的,那么这会很慢。是否有 NumPy 函数可以实现此目的(希望更快)?

最佳答案

您正在寻找 reduceat np.add的方法:

np.add.reduceat(A, idx)[:-1]

[:-1] 只是为了删除 reduceat 附加的最后一个元素以及来自 idx[-1] 的总和到 A.size

关于python - 是否有计算部分和的 NumPy 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60934382/

相关文章:

python - 如何将循环结果放入列表中?

python - 如何在Python中的一个变量中同时以读取和追加模式打开文件?

python - 如何在 Django REST Framework Browsable API 中自定义面包屑

python - 将新字符串添加到文本文件中特定行的末尾

python - 时间多个python脚本

使用 mod_wsgi/Apache2 部署 Flask 应用程序时出现 Numpy ImportError

python - 检查数组中是否有 3 个连续值高于某个阈值

python - 魔术方法、运算符和 getattribute - 更多内容?

python - 检查所有列表元素是否相同的代码返回 IndexError?

python - 使用 Numpy stride_tricks 获取非重叠数组 block