在numpy中创建特殊结构的nxn矩阵:单位矩阵和相同矩阵向右移动1列的总和

Posted

技术标签:

【中文标题】在numpy中创建特殊结构的nxn矩阵:单位矩阵和相同矩阵向右移动1列的总和【英文标题】:creating nxn matrix of special structure in numpy: sum of identity matrix and the same matrix shifted rightward by 1 column 【发布时间】:2020-12-24 05:45:04 【问题描述】:

给定一个整数n,我想制作n x n以下形式的numpy矩阵。

对于n =4

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

对于n= 5

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

在数学上,它是将单位矩阵与一个矩阵相加,该矩阵本质上是单位矩阵向右移动 1 列。这是分解的示例。

如何在numpy 中执行此操作,其中输入为n

【问题讨论】:

【参考方案1】:

检查numpyroll

n = 3
a1 = np.diag(np.full(n, 1))
out = a1+np.roll(a1,shift=1, axis=1)
out
Out[21]: 
array([[1, 1, 0],
       [0, 1, 1],
       [1, 0, 1]])

【讨论】:

以上是关于在numpy中创建特殊结构的nxn矩阵:单位矩阵和相同矩阵向右移动1列的总和的主要内容,如果未能解决你的问题,请参考以下文章