【问题标题】:How to average over a 2-D array?如何平均二维数组?
【发布时间】:2013-07-08 15:52:09
【问题描述】:

我有一个形状为(256,128) 的二维 numpy 数组,我想将 256 个中的每 8 行平均起来,所以我最终得到一个形状为 (32,128) 的 numpy 数组,有什么方法可以平均一维?

【问题讨论】:

    标签: python arrays numpy multidimensional-array indexing


    【解决方案1】:

    使用 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)
    

    【讨论】:

      【解决方案2】:

      你可以reshape然后在一个轴上平均:

       averaged = a.reshape((32,8,128)).mean(axis=1)
      

      结果是一个 (32,128) 数组。

      【讨论】:

        【解决方案3】:

        使用np.averageaxis 参数。如果不提供,则计算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])
        

        【讨论】:

        • 这回答了“有没有办法只平均一维?”但不是“我想将 256 中的每 8 行平均起来,所以我最终得到一个形状为 (32,128) 的 numpy 数组”。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-24
        • 2023-01-27
        • 1970-01-01
        相关资源
        最近更新 更多