2015-04-28 134 views
1

注意:我已經對數據集進行了編輯,我認爲這些編輯對於計算平均值會更好。計算元組列表中第i個元素的平均值


我的數據是這樣的:

[[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

你是否已經寫了一些代碼嗎?如果你有,它會幫助,如果你發佈。 – Stibu

+0

我添加了我的代碼。謝謝你看這個。 – user2057916

+0

Hi @ user2057916,歡迎來到StackOverflow!您應該在您的問題中添加'python'標籤,以便人們一眼就能看出您的問題與python有關。 –

回答

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']] 
+0

工作就像一個魅力。自從我上一篇文章以來,我一直在使用.append,但是我把它放在了錯誤的地方。非常感謝你! – user2057916

+1

@ user2057916沒問題!如果我的回答對你有幫助,你能否考慮在左邊勾選? :)(我也包括2個小數位格式在你的示例輸出中) – logic

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)] 
相關問題