计算矩阵列均值

时间:2017-03-28 11:17:30

标签: python python-3.x numpy machine-learning

我有这个矩阵:

      [[[ 0.49757494  0.50242506]
      [ 0.50340754  0.49659246]
      [ 0.50785456  0.49214544]
         ..., 
      [ 0.50817149  0.49182851]
      [ 0.50658656  0.49341344]
      [ 0.49419885  0.50580115]]

      [[ 0.117       0.883     ]
      [ 0.604       0.396     ]
      [ 1.          0.        ]
         ..., 
      [ 0.98559675  0.01440325]
      [ 0.948       0.052     ]
      [ 0.012       0.988     ]]

      [[ 0.21099179  0.78900821]
      [ 0.75212493  0.24787507]
      [ 0.96653919  0.03346081]
           ..., 
      [ 0.97485074  0.02514926]
      [ 0.95051503  0.04948497]
      [ 0.05409603  0.94590397]]]

如果权重是w1,w2,w3,我如何计算每个矩阵的第一列和第二列的平均值(3乘2)?所以我可以这样:

      [[[(X1        Y1]
        ...,
      [X2           Y2]
      [[X3          Y3]
        ...,

提前致谢。

编辑:输入形状是(3,37375,2),我想要而不是(3,2),a(1,2)。我想得到每列的均值,例如:

   (0.497*w1 + 0.503*w2 + 0.507*w3)/ (w1 + w2 + w3)     <--- First column

1 个答案:

答案 0 :(得分:2)

假设您的输入形状为(3,n,2),并且您希望形状为(n,3,2),则首先要做

in=in.reshape((-1,3,2))

如果您有加权向量w

w = np.random.rand(3)

然后你可以使用np.average在第一个轴上进行加权平均(得出(n,2)

out1 = np.average(in, weights = w, axis = 1)

或者你可以做加权和

out1 = np.sum(t*w[None,:, None], axis = 1) / np.sum(w)