如何根据列表的长度改变计算平均值的方法?(Python)

3

我有一个包含数组的列表,类似于以下内容:

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为C的长度。

我该如何实现这个?谢谢!


我认为:np.mean(a,axis=0)[0],其中a是输入,即A或B或其他任何该格式的内容。 - Divakar
哇,你真是个天才,它起作用了!谢谢 :D - Aalok Parkash
1个回答

1
你可以使用列表推导式:
>>> np.mean([A[i][0] for i in range(len(A))], axis=0)

或者更短、更易读,符合 Python 风格:

>>> 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.  ]])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接