计算二维数组中的维数平均值

我有一个这样的数组:

 a = [[40, 10], [50, 11]] 

我需要分别计算每个维度的均值,结果应该是这样的:

 [45,10.5] 

45a[*][0]的均值, 10.5是“a [*] [1]的均值。

什么是解决这个问题的最优雅的方式,而不是一个循环?

a.mean()需要一个axis参数:

 In [1]: import numpy as np In [2]: a = np.array([[40, 10], [50, 11]]) In [3]: a.mean(axis=1) # to take the mean of each row Out[3]: array([ 25. , 30.5]) In [4]: a.mean(axis=0) # to take the mean of each col Out[4]: array([ 45. , 10.5]) 

或者,作为一个独立的function:

 In [5]: np.mean(a, axis=1) Out[5]: array([ 25. , 30.5]) 

你的切片不工作的原因是因为这是切片的语法:

 In [6]: a[:,0].mean() # first column Out[6]: 45.0 In [7]: a[:,1].mean() # second column Out[7]: 10.5 

这是一个非numpy解决scheme:

 >>> a = [[40, 10], [50, 11]] >>> [float(sum(l))/len(l) for l in zip(*a)] [45.0, 10.5] 

如果你做了这么多, NumPy是要走的路。

如果由于某种原因您不能使用NumPy:

 >>> map(lambda x:sum(x)/float(len(x)), zip(*a)) [45.0, 10.5]