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

Python中如何实现两个数组元素对应相乘的最大和?附NumPy示例

两个数组元素配对最大乘积和的实现方法

你要的是让两个数组的元素一一配对(每个元素仅使用一次)后,乘积之和最大的结果,这对应数学里的排序不等式:将两个数组按相同顺序(同时升序或同时降序)排列后,对应元素相乘再求和,得到的就是最大乘积和。

具体实现(基于NumPy)

NumPy没有专门的现成函数直接做这个,但用排序功能就能快速搞定:

import numpy as np

a = np.array([1, 1, 1, 4])
b = np.array([1, 4, 1, 1])

# 方案1:同时升序排序后计算乘积和
max_sum = np.sum(np.sort(a) * np.sort(b))
# 方案2:同时降序排序,结果和方案1一致
max_sum = np.sum(np.sort(a)[::-1] * np.sort(b)[::-1])

print(max_sum)  # 输出19,和你示例里的计算结果一致

对应你的示例验证

你给出的示例计算式 a[3]*b[1] + a[0]*b[0] + a[1]*b[2] + a[2]*b[3] 本质就是把a按降序排([4,1,1,1])、b也按降序排([4,1,1,1])后对应相乘求和,结果正好是19,和代码计算结果完全匹配。

如果需要求最小乘积和,只要把其中一个数组升序、另一个降序后相乘求和即可:

min_sum = np.sum(np.sort(a) * np.sort(b)[::-1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:12:46