我想知道如何使用列矩阵制作矩阵。
例如,我有一个[1,2,3]
列矩阵。
我想制作矩阵
[ 1 0 0
2 1 0
3 2 1
0 3 2
0 0 3 ]
像这样。
那我该怎么做呢?是否有一些模块在python中制作这个矩阵?
尝试使用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也可能有一个更聪明(更有效?)的方法,但我相信这个循环很可读,效率不高
您可以使用此方法获得答案。
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])]