我有一个列表的Python:嵌套列表
a = [[1,2,3],[4,5,6],[7,8,9]]
现在我想找到这些内部列表的平均使
a = [(1+4+7)/3,(2+5+8)/3,(3+6+9)/3]
“一个”不应该是一个嵌套的发现平均列表最后。请提供通用的情况下
我有一个列表的Python:嵌套列表
a = [[1,2,3],[4,5,6],[7,8,9]]
现在我想找到这些内部列表的平均使
a = [(1+4+7)/3,(2+5+8)/3,(3+6+9)/3]
“一个”不应该是一个嵌套的发现平均列表最后。请提供通用的情况下
>>> import itertools
>>> [sum(x)/len(x) for x in itertools.izip(*a)]
[4, 5, 6]
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)
。
用于zip的+1,但是难道你不能为自己节省额外功能的麻烦吗? ;) – 2010-01-28 09:34:08
我认为OP不太了解Python。无论如何编辑:-) – 2010-01-28 09:34:53
如果您已经安装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.])
那你试试? – SilentGhost 2010-01-28 09:53:27