我有一个数组a
,像这样:
a = [[40, 10], [50, 11]]
我需要分别计算每个维度的平均值,结果应该是这样的:
[45, 10.5]
45
是a[*][0]
的平均值,10.5
是a[*][1]
的平均值。不使用循环,最优雅的解决方法是什么?
我有一个数组a
,像这样:
a = [[40, 10], [50, 11]]
我需要分别计算每个维度的平均值,结果应该是这样的:
[45, 10.5]
45
是a[*][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])
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的解决方案:
>>> 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]
In [n]:
是什么意思?这是代码的一部分吗? - otmezgeraxis=0
而不是axis=1
。 - otmezgeraxis=0
在下一行。我编辑了以显示更多信息,刷新一下,也许就可以了? - askewchanmean = np.mean(a, axis=(0,2,3))
这句话是什么意思?已知输入张量(a)的形状为(batch,channel,width,height)? - Hossein