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

问题描述 投票:-1回答:2

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

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

我想制作矩阵

[ 1 0 0

  2 1 0 

  3 2 1

  0 3 2

  0 0 3 ]

像这样。

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

python
2个回答
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也可能有一个更聪明(更有效?)的方法,但我相信这个循环很可读,效率不高


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])]
© www.soinside.com 2019 - 2024. All rights reserved.