【发布时间】:2013-07-08 15:52:09
【问题描述】:
我有一个形状为(256,128) 的二维 numpy 数组,我想将 256 个中的每 8 行平均起来,所以我最终得到一个形状为 (32,128) 的 numpy 数组,有什么方法可以平均一维?
【问题讨论】:
标签: python arrays numpy multidimensional-array indexing
我有一个形状为(256,128) 的二维 numpy 数组,我想将 256 个中的每 8 行平均起来,所以我最终得到一个形状为 (32,128) 的 numpy 数组,有什么方法可以平均一维?
【问题讨论】:
标签: python arrays numpy multidimensional-array indexing
使用 for 循环
[m, n ] = shape(Array)
meanArray = zeros((m/8, n))
for i in range(0, m/8):
f = i*8
meanArray[i, :] = numpy.mean(Array[f:f+8, :], axis=1)
【讨论】:
你可以reshape然后在一个轴上平均:
averaged = a.reshape((32,8,128)).mean(axis=1)
结果是一个 (32,128) 数组。
【讨论】:
使用np.average 的axis 参数。如果不提供,则计算flatten数组的平均值。
In [19]: a
Out[19]:
array([[1, 2, 3],
[2, 3, 4]])
In [20]: np.average(a)
Out[20]: 2.5
In [22]: np.average(a, axis=1)
Out[22]: array([ 2., 3.])
In [23]: np.average(a, axis=0)
Out[23]: array([ 1.5, 2.5, 3.5])
【讨论】: