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

NumPy数组中元素与其他元素无重复乘积求和的高效方法

高效计算NumPy数组元素两两无重复乘积之和

核心思路:用数学公式简化计算

不用嵌套循环,我们可以通过数学推导大幅提升计算效率:
对于数组x,所有两两非自身、无重复元素的乘积之和,等于数组元素总和的平方减去元素平方的总和,再除以2。推导公式如下:
$$\text{结果} = \frac{(\sum x)^2 - \sum x^2}{2}$$

推导逻辑:

  • 展开数组总和的平方:$(\sum x)^2 = (a+b+c+d)^2 = a²+b²+c²+d² + 2(ab+ac+ad+bc+bd+cd)$
  • 移项后即可得到目标乘积和:将平方项移至左侧,再除以2就能分离出我们需要的部分。

NumPy实现代码

import numpy as np

# 替换为你的目标数组
arr = np.array([1, 2, 3, 4])
sum_total = arr.sum()
sum_squares = (arr ** 2).sum()
# 整数数组用//保证结果为整数,浮点数数组直接用/
result = (sum_total ** 2 - sum_squares) // 2

这个方案完全依赖NumPy的矢量化运算,没有循环操作,时间复杂度为O(n),处理超大数组时的效率远高于O(n²)的循环实现,数组规模越大,性能差距越显著。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 21:31:11