如何用Python计算两个列表对应元素与其均值差值的乘积和?
Python离均差乘积和实现方案
你要计算的是两个序列的离均差乘积和(也是协方差的分子计算项),可参考以下两种实现方式:
方案1:纯Python原生实现(无需第三方依赖)
直接用Python内置函数实现,适合小数据量、不想安装额外库的场景:
from statistics import mean # Python 3.4及以上版本标准库自带 def calc_cross_product(x1: list[float|int], x2: list[float|int]) -> float: if len(x1) != len(x2): raise ValueError("两个输入列表的长度必须相等") m1 = mean(x1) m2 = mean(x2) # 生成器表达式累加所有离均差乘积 return sum((a - m1) * (b - m2) for a, b in zip(x1, x2)) # 测试你的样例数据 x1 = [3, 1, 3, 1, 3, 13] x2 = [2, 3, 31, 3, 13, 3] print(calc_cross_product(x1, x2)) # 输出结果为-37.0
方案2:NumPy实现(适合大数据量计算场景)
如果涉及大规模数值计算,推荐用NumPy向量化运算提升效率:
import numpy as np x1 = np.array([3, 1, 3, 1, 3, 13]) x2 = np.array([2, 3, 31, 3, 13, 3]) # 直接计算 cross_product = np.sum((x1 - x1.mean()) * (x2 - x2.mean())) print(cross_product) # 输出结果同样为-37.0
内容的提问来源于stack exchange,提问作者Collie
相关产品推荐
相关产品推荐

