获得numpy数组的多轴的平均值

dsg*_*101 16 python numpy

numpy有一种快速计算多轴平均值的方法吗?我正在计算除n维数组的0轴以外的所有平均值.

我目前正在这样做;

for i in range(d.ndim - 1):
    d = d.mean(axis=1)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个不使用python循环的解决方案.

Jai*_*ime 32

在numpy 1.7中你可以给多个轴np.mean:

d.mean(axis=tuple(range(1, d.ndim)))
Run Code Online (Sandbox Code Playgroud)

我猜这将与其他提议的解决方案类似地执行,除非重新整形数组以展平所有维度触发数据的副本,在这种情况下,这应该更快.所以这可能会提供更稳定的性能.


acj*_*jay 10

我的方法是重新整形数组以压平所有较高维度,然后在轴1上运行均值.这是你想要的吗?

In [14]: x = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])

In [16]: x.reshape((x.shape[0], -1)).mean(axis=1)
Out[16]: array([ 2.5,  6.5])
Run Code Online (Sandbox Code Playgroud)

(步骤2只计算较高dims长度的乘积)

  • 谢谢!此外,可以使用-1代替higher_dims. (3认同)
  • 对于 numpy 1.7 及更新版本,请参阅 /sf/answers/1218236281/ (2认同)