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

如何计算多个numpy数组组成的列表的加权平均值?

实现numpy数组的加权平均计算

你需要完成的是加权算术平均计算,核心逻辑是每个位置的元素等于对应数组元素乘以权重后的总和,再除以权重的总和。以下是几种简洁高效的实现方式:

方法一:使用np.average(推荐)

numpy内置的average函数支持直接传入权重参数,是最贴合需求的方案:

import numpy as np

w = [1, 3]
l2 = [np.array([3, 3]), np.array([1, 1])]

# 转换为二维数组后按列计算加权平均
result = np.average(np.array(l2), axis=0, weights=w)
print(result)  # 输出: array([2., 2.])

解释:np.array(l2)将列表中的一维数组转为2×2的二维数组,axis=0指定对每一列(即每个元素位置)计算加权平均,weights=w对应每个数组的权重。

方法二:手动实现(直观易懂)

如果想明确看到计算逻辑,可以用numpy的广播机制手动完成:

import numpy as np

w = [1, 3]
l2 = [np.array([3, 3]), np.array([1, 1])]

total_weight = sum(w)
# 加权求和后除以总权重
result = (w[0] * l2[0] + w[1] * l2[1]) / total_weight
print(result)  # 输出: array([2., 2.])

这种写法适合数组数量较少的场景,逻辑清晰直白。

方法三:通用扩展写法(适配任意数量数组)

如果你的数组和权重列表长度不确定,可以用np.dot实现通用计算:

import numpy as np

w = [1, 3]
l2 = [np.array([3, 3]), np.array([1, 1])]

w_arr = np.array(w)
l2_arr = np.array(l2)
# 权重与数组的点积得到加权和,再除以总权重
result = np.dot(w_arr, l2_arr) / w_arr.sum()
print(result)  # 输出: array([2., 2.])

此写法不受数组数量限制,扩展性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:33:18