【发布时间】:2020-11-26 08:01:42
【问题描述】:
我想重写这个协方差函数:
def cov1(a, b):
a_mean = np.mean(a)
b_mean = np.mean(b)
sum = 0
for i in range(0, a.size):
sum = ((a[i] - a_mean) * (b[i] - b_mean)) + sum
return sum/(len(a)-1)
我尝试重写求和部分以使其成为 np.sum:
def cov(a, b):
a_mean = np.mean(a)
b_mean = np.mean(b)
for i in range(0, a.size):
summation = np.sum((a[i] - a_mean) * (b[i] - b_mean))
return summation/(len(a)-1)
但是当我取两个数组时:
a = np.arange(1,11,1)
b = np.arange(10,21,1)
我尝试了两种不同的功能,得到了不同的答案。函数 cov1 是正确的:
print(cov1(a,b))
print(cov(a,b))
9.166666666666666
2.0
这是为什么?如何修复函数 cov(a,b) 以使其与 cov1(a,b) 相同?
【问题讨论】:
-
请注意数组
a和b的长度不同。不知道是不是笔误 -
cov1每次将当前步骤的部分和相加;cov替换旧值。另外,不要使用sum作为变量名,因为它隐藏了内置的sum函数。此外,您不必自己实现这一点。您是否尝试将numpy covariance放入搜索引擎?
标签: python function numpy jupyter