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

如何高效计算NumPy数组的特定三角函数累加乘积和?

高效实现指定累加和的方法

计算规律分析

对于任意长度的数组A,你需要的累加和可拆解为:每一项是cos(A[i])乘以A中前i个元素(索引0到i-1)的sin值的乘积,当i=0时,乘积项为1(无前置元素)。展开形式为:

cos(A[0]) + cos(A[1])×sin(A[0]) + cos(A[2])×sin(A[1])×sin(A[0]) + ... + cos(A[-1])×sin(A[-2])×...×sin(A[0])

numpy高效实现方案

利用numpy的向量运算和累积乘积函数cumprod,可避免循环,大幅提升计算效率,代码如下:

import numpy as np

def compute_custom_sum(A):
    sin_vals = np.sin(A)
    # 生成前置sin值的累积乘积数组:开头补1,取前len(A)项
    cum_sin_products = np.cumprod(np.insert(sin_vals, 0, 1))[:-1]
    cos_vals = np.cos(A)
    return np.sum(cos_vals * cum_sin_products)

# 测试示例
A = np.array([1,2,3,4])
print(compute_custom_sum(A))

原理说明

  1. np.sin(A)计算数组所有元素的sin值,得到sin_vals
  2. np.insert(sin_vals, 0, 1)在sin_vals开头插入1,再用cumprod计算累积乘积,最后取前len(A)项,得到的cum_sin_products正好对应每一项cos(A[i])需要乘的前置sin乘积
  3. 将cos_vals与cum_sin_products逐元素相乘后求和,即为最终结果

这种方法基于numpy底层优化运算,处理大数组时比Python循环快数个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 20:40:04