我有这样一个矩阵:
[[[ 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),而是(1,2)。我希望得到每列的均值,例如:
(0.497*w1 + 0.503*w2 + 0.507*w3)/ (w1 + w2 + w3) <--- 第一列
回答:
假设你的输入形状是(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)