注意:我已经对数据集进行了编辑,我认为这些编辑可以更好地计算平均值。
我的数据如下:
[[2015, 0.23, 0.45, 1.23],
[2014, 1.22, 2.54, 0.98],
[2013, 0.33, 2.11, 0.43],
...]
数据现在是列表中的列表。子列表中的第一个元素是增长年份,以下三个浮点数是该年份的环宽度。我的问题是:有没有办法计算每个子列表中最后三个元素的平均值,并生成一个新的列表,只有年份,平均增长看起来像:
[[2015, 1.58], [2014, 0.956], ...]
1.58
为(1.22 + 2.54 + 0.98)/3
。
很抱歉之前的混乱,我是Stack Overflow的新手,我可以说更多信息更好。
这是我到目前为止的代码:
for i in list[0]:
newlist = [(list[1] + list[2] + list[3])/3]
但这似乎不起作用。
任何帮助将不胜感激。谢谢!
答案 0 :(得分:2)
如果您的数据采用以下格式:
trees= [[2015, 0.23, 0.45, 1.23],
[2014, 1.22, 2.54, 0.98],
[2013, 0.33, 2.11, 0.43]]
你可以这样做:
new_trees=[]
for x in trees:
average="{0:.2f}".format(sum(x[1:])/len(x[1:]))
new_trees.append([x[0]]+[average])
#year + average
这将输出:
>>> new_trees
[[2015, '0.64'], [2014, '1.58'], [2013, '0.96']]
答案 1 :(得分:0)
@logic有第一个正确的答案(应该是接受的答案),这里是如何使用短列表理解。
trees= [[2015, 0.23, 0.45, 1.23],
[2014, 1.22, 2.54, 0.98],
[2013, 0.33, 2.11, 0.43]]
data = [ (x[0], (sum(x[1:]) / len(x[1:])) ) for x in trees]
产生这个元组列表:
[(2015, 0.6366666666666667), (2014, 1.58), (2013, 0.9566666666666667)]