我正在尝试在Python 3中编写一个程序,它计算连续值之间绝对差值的平均值。Python中绝对差异的均值
回答
当编辑:由于代码已从问题中删除,请更新答案,将代码移至底部。
如评论中给出的,您可以使用enumerate()
来获取索引以及数组中的元素,然后使用它来计算平均值。示例 -
>>> def absolute_difference(v):
... sum_diff = 0
... for i,x in enumerate(v):
... if i+1 < len(v):
... sum_diff += abs(v[i+1] - x)
... r = sum_diff/len(v)
... return r
...
>>> absolute_difference([4.0, 4.2, 4.1, 4.4, 4.3])
0.1400000000000004
大量的代码问题(你似乎已删除) -
你为什么你的绝对差异转化为
float
?浮动数学不准确,你可以从你的代码中的差异总和中看到 -0.20000000000000018
。在你的情况下,你不需要将它们转换为浮动。,因为使用的是
//
分发生的0.0
为r
的主要问题,//
截断划分为最接近的整数,所以潜水7.0
的东西刨丝器比使用//
总会导致0.0
。示例 ->>> 7.0 // 8.0 0.0 >>> 7.0/8.0 0.875
对于你的情况,你应该使用划分
/
。您在循环的每次迭代中都采用了均值,但这不是问题,可能不是完全需要的。如果你不想在循环的每次迭代中使用mean,你应该在循环外部缩进它。
OP需要成对的值,因此正在使用索引。他们应该'枚举',或者可以使用'itertools'中的['pairwise'](https://docs.python.org/2/library/itertools.html#recipes)配方。 –
是的,好主意。更新了答案。 –
您正在使用//
这意味着在python整数除法3
即
即)
2/4 =0.5
2//4=0
只需更换//
与/
计算ř
这里是另一种方法:
def absolute_difference(values):
last = values[0]
total = 0
for value in values[1:]:
total += abs(value - last)
last = value
return total/(len(values)-1)
print('{:.5f}'.format(absolute_difference([4.0, 4.2, 4.1, 4.4, 4.3])))
给出答案:0.17500
另外,为了防止None
从末出现,你必须在你的定义到底有return
。如果您将另一个变量“等于”(=
)作为您的定义,则会发生这种情况。这在其他帖子中已经显示,但我只是想强调一下。
- 1. 从两组得分的均值中获得绝对偏差
- 2. numpy的版本(平均绝对偏差)
- 3. 绝对差值EmguCv
- 4. 差异(均衡)
- 5. groupby object pandas的绝对值的均值
- 6. SQL Server DateTime列的差异平均值
- 7. Python中的均方误差
- 8. Python - 大熊猫:日平均值的月平均值与月平均值本身之间的差异
- 9. 处理绝对差异的BOOST_CHECK_CLOSE版本
- 10. 按Python中两列之差的绝对值排序
- 11. mongo DB的平均差异
- 12. 评估Oracle中一组数字的平均绝对偏差
- 13. Random Forest中每棵树的平均绝对误差
- 14. Python /熊猫:使用日期差异的列值的加权平均值
- 15. numpy矩阵中的绝对非对角线差异总和
- 16. 价值和平均值之间的差异(价值)
- 17. Python的差异
- 18. Python的差异
- 19. 均匀分布差异
- 20. 数据帧的总和绝对差值
- 21. MySQL添加时间值之间的差异来查找平均差异。
- 22. k均值算法中k和质心之间的差异
- 23. 使用数组取平均值在Excel中的滚动差异?
- 24. 查找与C中平均值差异最小的元素C
- 25. 计算R中的平均配对差异
- 26. 计算MAD(平均绝对差)的GroupBy熊猫
- 27. 计算平均绝对误差之间的两个图像MATLAB
- 28. PHP运行多个数组值差异的平均值
- 29. 阵列中两个数字之间的最小绝对差异
- 30. 词典列表中的Python均值和标准差
'r = sum_dif //(len(v)-1)'不应该在for循环的范围内。与'/'相反的''是整数除法。在你的例子中使用'/'更有意义,我想 – cel
'//'是整数(“floor”)的分割,例如。 '0.7 // 10'会给你'0.0'。你只需要使用'/'。 – fjarri