Python中的矩阵具有可变的维度

时间:2018-03-21 21:56:22

标签: python arrays loops for-loop matrix

首先,我希望能够指定一个值n,这会导致生成一个特定的nxn矩阵: 为此,我使用了代码:

n = __

np.eye (n)

这将生成指定维度的单位矩阵n。 但是,我不想精确地创建单位矩阵。相反,我想用以下条目创建nxn矩阵:(如果n为5)

[1, 0, 0, 0, 0]
[a, b, c, 0, 0]
[0, a, b, c, 0]
[0, 0, a, b, c]
[0, 0, 0, 0, 1]

我可以使用np.eye(n)和for循环来解决我的问题吗?

例如,如果我设置n = 4,我希望我的代码形成:

[1 , 0 , 0, 0]
[a , b, c, 0]
[0, a, b, c]
[0, 0, 0, 1]

1 个答案:

答案 0 :(得分:0)

是的,您可以使用np.eye然后使用for循环来设置所有值。

In [30]: a, b, c = (5, 6, 7)
In [31]: n = 5
In [32]: arr = np.eye(n)
In [33]: for i in range(1, n-1):
    ...:     arr[i, i-1: i+2] = (a, b, c)
    ...:     

In [34]: arr
Out[34]: 
array([[ 1.,  0.,  0.,  0.,  0.],
       [ 5.,  6.,  7.,  0.,  0.],
       [ 0.,  5.,  6.,  7.,  0.],
       [ 0.,  0.,  5.,  6.,  7.],
       [ 0.,  0.,  0.,  0.,  1.]])

这里我们创建一个大小为n的单位矩阵。然后在第33行中,我们遍历矩阵的行(不包括第一行和最后一行),并用abc替换该行中的相应值。