我有一个列表,我想计算它的平均值 . 获得平均值后,我想从列表中减去每个项目的平均值 . 获得所有值后,我想要平方和总和 .
x=[17,13,12,15,16,14,16,16,18,19]
Average is 15.6
For example list look like: x=[17,13,12,15,16,14,16,16,18,19]
步骤1:
Find average value
sum(x)/len(x)
average value is 15.6
第2步:从平均值中减去列表中的每个项目
17-15.6 = 1.4
13-15.6 = -2.6
12-15.6 = -3.6
15-15.6 = -0.6
16-15.6 = 0.4
14-15.6 = -1.6
16-15.6 = 0.4
16-15.6 = 0.4
18-15.6 = 2.4
19-15.6 = 3.4
第3步:之后我想应用每个结果的平方
1.4 * 1.4 = 1.96
-2.6 * -2.6 = 6.76
-3.6 * -3.6 = 12.96
-0.6 * -0.6 = 0.36
0.4 * 0.4 = 0.16
-1.6 * -1.6 = 2.56
0.4 * 0.4 = 0.16
0.4 * 0.4 = 0.16
2.4 * 2.4 = 5.76
3.4 * 3.4 = 11.56
第4步:之后我想总结正方形
1.96 + 6.76 + 12.96 0.36 +0.16 + 2.56 + 0.16 + 0.16 + 5.76 + 11.56 = 42.4
我尝试了这种方法,我能够进入第3步
def sumx(x):
for i in x: #
result=i-sum(x)/len(x) #
result=result*result #
#result="{:.2f}".format(result)
print("{:.2f}".format(result))
total=0
for i in result:
total +=i
return (total)
sumx(x)
Error Message
结果中i的错误消息:TypeError:'float'对象不可迭代
所需的输出为42.4
5 回答
你的错误在这里:
这里的结果只是一个数字,而不是一个列表 . 因此,整个代码写错了 .
相反,你可以在函数的起始位置初始化total并摆脱for循环 .
这是一个简单的代码:
如果你想要它作为一个功能:
您可以使用
numpy
和列表理解:我尝试你的问题,尽管它没有像我已经想到的其他答案那么精细,但它基本上是一步一步的:D
您可以使用
numpy
并将计算向量化:...因为点积等于平方元素的总和 . 更简洁:
...计算n次方差,它应该等于你想要的 .
基本上你想要计算列表
x
的均值和方差 .如果你只想要平方和,则在
var
的计算中通过n
删除除法 .所以,如果你只想返回平方和: