如何使用列矩阵制作矩阵?

时间:2019-04-11 03:54:30

标签: python

我想知道如何使用列矩阵制作矩阵。

例如,我有一个[1,2,3]列矩阵。

我想制作矩阵

[ 1 0 0

  2 1 0 

  3 2 1

  0 3 2

  0 0 3 ]

像这样

那我该怎么做呢?是否有一些模块可以在python中制作此矩阵?

2 个答案:

答案 0 :(得分:1)

尝试使用numpynp.zeros

import numpy as np 

def get_matrix(col):
    mat = np.zeros((len(col) * 2 - 1, len(col)))
    for i in range(len(col)):
        mat[i : i + len(col), i] = col
    return mat

col = [1, 2, 3]
print(get_matrix(col))

打印:

array([[1., 0., 0.],
       [2., 1., 0.],
       [3., 2., 1.],
       [0., 3., 2.],
       [0., 0., 3.]])

col = [1, 2, 3, 4, 5]
print(get_matrix(col))

打印

array([[1., 0., 0., 0., 0.],
       [2., 1., 0., 0., 0.],
       [3., 2., 1., 0., 0.],
       [4., 3., 2., 1., 0.],
       [5., 4., 3., 2., 1.],
       [0., 5., 4., 3., 2.],
       [0., 0., 5., 4., 3.],
       [0., 0., 0., 5., 4.],
       [0., 0., 0., 0., 5.]])

我相信。否则,可以更精确地构建矩阵。

也许还有一种更聪明(更有效的方法)使用纯numpy来做到这一点,但我相信此循环可读性强,效率不高

答案 1 :(得分:0)

您可以使用此方法获得答案。

import numpy as np

a=[1,2,3]
a.extend([0]*2)
d=[np.roll(a,i) for i in range(3)]
print(d)

[array([1, 2, 3, 0, 0]), array([0, 1, 2, 3, 0]), array([0, 0, 1, 2, 3])]