编写自定义函数乘以x,y的平均值
x=[17,13,12,15,16,14,16,16,18,19]
y=[94,73,59,80,93,85,66,79,77,91]
我有两个清单,我想计算其平均值。得到两个平均值后,我想相乘
此代码我已尝试实现此功能,但无法获得预期的输出。如果有帮助的话
def X_bar_y_bar(x,y):
x1=[]
y1=[]
ab=[]
for i in x:
result_x1=i-sum(x)/float(len(x))
result_x1=result_x
x1.append(result_x1)
for k in y:
result_y1=k-sum(y)/float(len(y))
result_y1=result_y
y1.append(result_y1)
total=0
for i in x1:
for j in y1:
r1=i*j
total = +r1
print("{:.2f}".format(total))
所需的输出:
20.02
17.42
74.52
-0.18
5.32
-5.48
-0.28
-6.48
38.42
答案 0 :(得分:1)
您实际上应该将NumPy用于此类事情:
import numpy as np
x=np.array([17,13,12,15,16,14,16,16,18,19])
y=np.array([94,73,59,80,93,85,66,79,77,91])
(x - np.mean(x)) * (y - np.mean(y))
# array([20.02, 17.42, 74.52, -0.18, 5.32, -8.48, -5.48, -0.28, -6.48, 38.42])
答案 1 :(得分:1)
如果您不必使用'numpy',则可以使用以下代码:
x=[17,13,12,15,16,14,16,16,18,19]
y=[94,73,59,80,93,85,66,79,77,91]
def X_bar_y_bar(x,y):
xave = sum(x)/float(len(x))
yave = sum(y)/float(len(y))
for i in range(len(x)):
result=((x[i]-xave)*(y[i]-yave))
print("{:.2f}".format(result))
X_bar_y_bar(x,y)
与您的代码相比,更改很少:
1)平均值计算一次,您应该将其带出循环 2)作业'result_x1 = result_x'不执行任何操作,请跳过