如何使用NumPy API对数组每N个元素求和?
NumPy数组每3个元素分组求和的实现方案
当然有合适的NumPy API可以实现这个需求,而且方法简洁高效:
方法一:针对长度刚好是分组数倍数的情况
直接用reshape将数组重组为二维数组,再按行求和即可:
import numpy as np arr = np.array([1,2,3,2,3,7,2,3,4]) # 重组为每行3个元素的二维数组,再对每行求和 result = arr.reshape(-1, 3).sum(axis=1) print(result) # 输出: [ 6 12 9]
reshape(-1, 3)中的-1表示让NumPy自动计算行数,这里9个元素会被分成3行3列的数组sum(axis=1)指定沿着行的维度求和,也就是对每一组3个元素计算总和
方法二:通用处理(数组长度不被分组数整除时)
如果数组总长度不是分组数的整数倍,又想只处理完整的分组(忽略最后不足的部分),可以先截取到刚好能整除的长度再处理:
group_size = 3 # 截取到能被分组数整除的最大长度 trimmed_arr = arr[:len(arr) // group_size * group_size] result = trimmed_arr.reshape(-1, group_size).sum(axis=1)
这两种方法都是基于NumPy原生API实现的,避免了Python循环,计算效率远高于手动遍历求和。
内容的提问来源于stack exchange,提问作者maplemaple
相关产品推荐
相关产品推荐

