首页 文章

具有相同对角线的矩阵[重复]

提问于
浏览
1

这个问题在这里已有答案:

请参考以下内容:

Constructing a special matrix in numpy dynamically

有没有办法以类似的方式实际创建矩阵,其中对角线值本身就是矩阵 . 例如:

[A 0 0 0]
[0 A 0 0]
[0 0 A 0]
[0 0 0 A]

其中A是例如:

[1 1]
[1 1]

0是一个类似的大小矩阵,所以

[0 0]
[0 0]

也许,使用链接中的答案中介绍的方法 . 即 np.diag(Matrix*s,0) .

假设我也希望有一些与之前相同大小的其他矩阵,但是这个矩阵会像_947450一样在上面和下面运行对角线,如下所示:

[A B 0 0]
[B A B 0]
[0 B A B]
[0 0 B A]

1 回答

  • 2

    就个人而言,我认为@Divakar的建议是最好的,将 numpy.kronnumpy.eye 结合使用 . 关键是使用 np.eye(N, M=N, k) ,其中 k 指定单位矩阵的对角线 . 使用 k = 0 作为标准标识,但对于非对角线术语,请使用 k = +/- 1 . 例如:

    A = np.ones((2,2))
    B = 2*A
    C = np.kron(np.eye(4), A)
    C += np.kron(np.eye(4, k=1), B)
    C += np.kron(np.eye(4, k=-1), B)
    

    产量

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

相关问题