如何在numpy中高效将数组[a,b,c]转换为[a+b+c, b+c, c]
Numpy数组后缀和转换方案
你需要实现的是浮点数numpy数组的后缀和计算,以下是性能最优的两种实现,全部基于numpy底层向量化运算,无Python层循环开销:
通用场景(任意长度数组都适用)
利用np.cumsum配合两次反转实现,代码简洁且性能拉满:
import numpy as np # 你的输入数组 arr = np.array([a, b, c], dtype=np.float64) # 转换逻辑 res = np.cumsum(arr[::-1])[::-1]
示例验证:输入np.array([1.5, 2.5, 3.5]),输出结果为array([7.5, 6. , 3.5]),完全符合[a+b+c, b+c, c]的要求。
固定长度为3的特殊场景
如果你的数组长度永远固定为3,也可以直接通过索引计算,性能和通用方案无明显差异:
res = np.array([arr.sum(), arr[1] + arr[2], arr[2]])
内容的提问来源于stack exchange,提问作者Galen BlueTalon
相关产品推荐
相关产品推荐

