Uni*_*ron 5 python numpy matrix
我有三个Numpy矩阵
a = np.matrix('1 2; 3 4')
b = np.matrix('5 6 7; 8 9 10')
c = np.matrix('1 2 3; 4 5 6; 7 8 9')
我想制作以下块矩阵:
M = [a b ; 0 c]
,
其中0
代表具有相关尺寸的零矩阵.
创建块矩阵的简单方法是numpy.bmat
(正如@inquisitiveIdiot所指出的).根据您要创建的块矩阵判断,您需要一个3x2的零矩阵:
>>> import numpy as np
>>> z = np.zeros( (3, 2) )
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过将块的2x2数组传递到numpy.bmat
以下内容来创建块矩阵:
>>> M = np.bmat( [[a, b], [z, c]] )
>>> M
matrix([[ 1., 2., 5., 6., 7.],
[ 3., 4., 8., 9., 10.],
[ 0., 0., 1., 2., 3.],
[ 0., 0., 4., 5., 6.],
[ 0., 0., 7., 8., 9.]])
Run Code Online (Sandbox Code Playgroud)
另一种(IMO更复杂)的方法是使用numpy.hstack
和numpy.vstack
.
>>> M = np.vstack( (np.hstack((a, b)), np.hstack((z, c))) )
>>> M
matrix([[ 1., 2., 5., 6., 7.],
[ 3., 4., 8., 9., 10.],
[ 0., 0., 1., 2., 3.],
[ 0., 0., 4., 5., 6.],
[ 0., 0., 7., 8., 9.]])
Run Code Online (Sandbox Code Playgroud)