如何根据列表的长度更改平均值? (Python)的

时间:2018-01-09 14:31:03

标签: python numpy

我有一个包含包含数组的列表的列表,如下所示:

A = [
    [
        array([[ 1.,  4.3, 0.,  0.],
               [ 0.,  0.,  0.,  0.],
               [ 0.,  0.,  0.,  0.],
               [ 0.,  0.,  0.,  0.]])
    ],

    [
        array([[ 5.,  0.,  0.,  0.],
               [ 0.,  0.,  0.,  0.],
               [ 0.,  0.,  0.,  0.],
               [ 0.,  0.,  0.,  0.]])
    ]
]       

所以我基本上有两个4x4矩阵。现在,我们的目标是取得我设法做到的这两项的平均值:

np.mean([A[0][0],A[1][0]],axis=0)

我还有另一个矩阵B,它由三个4x4矩阵组成,平均值就像

np.mean([B[0][0],B[1][0]],B[2][0],axis=0)

我想概括一下,这样我每次都不必重写np.mean部分。所以我可能会使用A(2)的长度或B(3)的长度来构造它,但我不确定如何获得类似的东西

np.mean(C[0][0],C[1][0],[...][0],[n-1][0],axis=0)

其中n是len(C)。

我该如何实现?谢谢!

1 个答案:

答案 0 :(得分:1)

你可以使用列表理解:

>>> np.mean([A[i][0] for i in range(len(A))], axis=0)

或更短,更具可读性和" pythonic":

>>> np.mean([a[0] for a in A], axis=0)
array([[ 3.  ,  2.15,  0.  ,  0.  ],
       [ 0.  ,  0.  ,  0.  ,  0.  ],
       [ 0.  ,  0.  ,  0.  ,  0.  ],
       [ 0.  ,  0.  ,  0.  ,  0.  ]])