所以我的目标如下,给定矩阵 s
的大小,我试图创建一个如下所示的矩阵,但是对于大小 sxs
:
[1 1 0]
[1 1 1]
[0 1 1]
对于4x4的大小,它看起来如下所示:
[1 1 0 0]
[1 1 1 0]
[0 1 1 1]
[0 0 1 1]
因此,您可以观察到一种模式:有 s-1
个重叠的迷你 2x2
个矩阵 .
我正在考虑创建 2x2
一个矩阵然后使用动态引用(for循环?),如 B[:-1,:-1] = ones_matrix
,其中 B
是大小为 sxs
的零矩阵 . 但是我不知道如何在这里加入for循环,因为如果我们说 4x4
矩阵,那么我们必须以三种方式引用 B
: B[:-1,:-1] = ones_matrix, B[1:-1,1:-1] = ones_matrix, B[2:,2:]=ones_matrix
. 我无法找到一种方法来动态地为 n
-sized零矩阵做这件事 . 有没有其他方法可以做到这一点?
3 回答
方法#1:代替一堆2x2矩阵,可能更容易将它看作1的三个对角线并将它们结合起来:
方法#2 :(受Divankar的回答启发),我们可以考虑距离中心的距离:
方法#3:我们可以利用
tril
或triu
并做一些算术:矢量化方法broadcasting -
样品运行 -
你也可以使用sympy.Matrix: