2010-01-28 181 views
11

我有一個列表的Python:嵌套列表

a = [[1,2,3],[4,5,6],[7,8,9]] 

現在我想找到這些內部列表的平均使

a = [(1+4+7)/3,(2+5+8)/3,(3+6+9)/3] 

「一個」不應該是一個嵌套的發現平均列表最後。請提供通用的情況下

+0

那你試試? – SilentGhost 2010-01-28 09:53:27

回答

4
>>> import itertools 
>>> [sum(x)/len(x) for x in itertools.izip(*a)] 
[4, 5, 6] 
10
a = [sum(x)/len(x) for x in zip(*a)] 
# a is now [4, 5, 6] for your example 

在Python 2.x的答案,如果你不想整數除法呢,替代由上述1.0*sum(x)/len(x)sum(x)/len(x)

Documentation for zip

+0

用於zip的+1,但是難道你不能爲自己節省額外功能的麻煩嗎? ;) – 2010-01-28 09:34:08

+0

我認爲OP不太瞭解Python。無論如何編輯:-) – 2010-01-28 09:34:53

4

如果您已經安裝numpy

>>> import numpy as np 
>>> a = [[1,2,3],[4,5,6],[7,8,9]] 
>>> arr = np.array(a) 
>>> arr 
array([[1, 2, 3], 
     [4, 5, 6], 
     [7, 8, 9]]) 
>>> np.mean(arr) 
5.0 
>>> np.mean(arr,axis=0) 
array([ 4., 5., 6.]) 
>>> np.mean(arr,axis=1) 
array([ 2., 5., 8.])