在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列的总和的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NumPy 中创建一个空数组/矩阵?

numpy矩阵向量乘法[重复]

numpy笔记

NumPy:在子矩阵/块和相应的行、列索引中找到最小值

NumPy 2d 数组的切片,或者如何从 nxn 数组 (n>m) 中提取 mxm 子矩阵?

在Python中创建生成稀疏矩阵(均匀分布高斯分布)