在Python中,给定一个nxp矩阵,例如4 x 4,我怎样才能返回一个4 x 2的矩阵,它只是平均前两列和矩阵的所有4行的最后两列?
例如:
a =数组([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]])
返回一个平均值为[:,0]和[:,1]的矩阵,以及[:,2]和[:,3]的平均值.我希望这适用于nxp的任意矩阵,假设我平均n的列数明显可以被n整除.
让我澄清一下:对于每一行,我想取前两列的平均值,然后是最后两列的平均值.所以它会是:
1 + 2/2,3 + 4/2 < - 新矩阵的第1行1 + 6/2,7 + 8/2 <新矩阵的第2行等.
它应该产生4乘2的矩阵而不是4 x 4.
谢谢.
用一些数学怎么样?您可以定义矩阵M = [[0.5,0],[0.5,0],[0,0.5],[0,0.5]],这A*M就是您想要的.
from numpy import array, matrix
A = array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]])
M = matrix([[0.5,0],
[0.5,0],
[0,0.5],
[0,0.5]])
print A*M
Run Code Online (Sandbox Code Playgroud)
生成M也很简单,条目1/n为零.
对于 n > 4 的矩阵应该发生什么还不清楚,但是这段代码将执行您想要的操作:
a = N.array([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]], dtype=float)
avg = N.vstack((N.average(a[:,0:2], axis=1), N.average(a[:,2:4], axis=1))).T
Run Code Online (Sandbox Code Playgroud)
这产生avg =
array([[ 1.5, 3.5],
[ 5.5, 7.5],
[ 9.5, 11.5],
[ 13.5, 15.5]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
695 次 |
| 最近记录: |