【问题标题】:Mean of each element of matrices in a list列表中每个矩阵元素的平均值
【发布时间】:2021-10-29 23:26:51
【问题描述】:

您好,我是 python 新手,我无法解决我的问题。假设我有一个列表 (a),这个列表有许多相同形状的矩阵。我想得到一个矩阵,每个元素的平均值。

这是列表及其元素:

a[0]=[1 2 3]
a[1]=[3 4 5]
a[2]=[6 7 8]

这是所需的矩阵:

 mean=[10/3 13/3 16/3]

Mean of each element of a list of matrices

实际上,这个答案对我有好处,但它适用于 R,而不是 python。抱歉,如果我在提问时犯了错误。

【问题讨论】:

    标签: python arrays list numpy matrix


    【解决方案1】:

    使用 Python 列表推导

    a = [[1, 2, 3],
         [3, 4, 5],
         [6, 7, 8]]
    
    mean = [sum(row)/len(row) for row in zip(*a)]  # use zip(*a) to transpose matrix 
                                                   # since sum along columns
                                                   # by summing rows of transposed a
    # [3.3333333333333335, 4.333333333333333, 5.333333333333333]
    

    【讨论】:

      【解决方案2】:

      这是一个适用于任何矩阵维度的纯 Python 解决方案:

      matrice = [
          [1, 2, 3],
          [3, 4, 5],
          [6, 7, 8]
      ]
      
      
      def mean_mat(mat):
          dim_axis_0 = mat.__len__()
          mean = [0 for i in range(dim_axis_0)]
          for vector in mat:
              for i, value in enumerate(vector):
                  mean[i] += (value / dim_axis_0)
          return mean
      
      
      print(mean_mat(matrice))
      >>> [3.333333333333333, 4.333333333333334, 5.333333333333334]
      

      但是,正如 user1740577 所指出的,您应该查看 Numpy 库。

      【讨论】:

        【解决方案3】:

        试试这个:

        import numpy as np
        a= [[1,2,3],[3,4,5],[6,7,8]]
        np.mean(a, axis=0)
        # array([3.33333333, 4.33333333, 5.33333333])
        

        【讨论】:

        • 非常感谢。我尝试了很多次这个功能,但错过了axis = 0我是多么愚蠢。再次感谢您。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-20
        • 1970-01-01
        • 2018-09-23
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 2015-10-23
        相关资源
        最近更新 更多