我想知道如何使用列矩阵制作矩阵。
例如,我有一个[1,2,3]
列矩阵。
我想制作矩阵
[ 1 0 0
2 1 0
3 2 1
0 3 2
0 0 3 ]
像这样
那我该怎么做呢?是否有一些模块可以在python中制作此矩阵?
答案 0 :(得分:1)
尝试使用numpy
和np.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])]