有没有一种方法可以用第一列以及各列之间的关系构建矩阵?

时间:2019-07-17 19:14:43

标签: python numpy

我正在尝试构建一个知道第一列以及列之间关系的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.]])

谢谢!

1 个答案:

答案 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.]])