我正在尝试构建一个知道第一列以及列之间关系的numpy矩阵B
更具体地说,我有第一列,如B的array([1],[1],[1],[1]),另一个已知矩阵A,其关系为B(t + 1)= B(t)+ A(t + 1)。 B(t)表示B的t列。有什么方法可以使用矩阵计算而不使用for循环来构建B?
我尝试过np.einsum,但似乎只能使用已知矩阵进行计算
A = matrix([[1, 2, 3, 4],
[2, 4, 5, 6],
[3, 5, 6, 7],
[4, 6, 5, 4]])
B = matrix([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])
现在,我要填充B的列(第一列除外)。
我希望决赛
B = matrix([[ 1., 3., 6., 10.],
[ 1., 5., 10., 16.],
[ 1., 6., 12., 19.],
[ 1., 7., 12., 16.]])
谢谢!
答案 0 :(得分:0)
您可以通过堆叠B
的第一行和A
的第一行以外的所有内容来构建新矩阵。然后,您可以使用np.cumsum()
进行累计:
A=np.matrix([[1, 2, 3, 4],
[2, 4, 5, 6],
[3, 5, 6, 7],
[4, 6, 5, 4]])
B=np.matrix([[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.],
[1., 0., 0., 0.]])
np.cumsum(np.hstack([B[:,:1], A[:,1:]]), axis=1)
结果:
matrix([[ 1., 3., 6., 10.],
[ 1., 5., 10., 16.],
[ 1., 6., 12., 19.],
[ 1., 7., 12., 16.]])