不同形状矩阵的矩阵Python

Matrix of different shaped matrices Python

我正在尝试通过 numpy.linal.solve 和 python 求解线性方程组。 等式看起来像这样:Ax=b.

在我的例子中,A 应该是不同矩阵的矩阵 [[W,U.T],[U,0]], 其中 W 是一个 150x150 numpy 数组,U.T 是一个 150x11 numpy 数组,因此 U 是一个 11x150 numpy 数组。
结果 b 应该是一个如下所示的向量:[0,y], 其中 y 是 1x11 向量。

我的问题是我不知道如何连接矩阵A的矩阵。 我已经尝试过使用 concatenate 或 numpy class 的堆栈运算符。但这会导致 161x161 矩阵 A 而我需要一个 2x2 矩阵。 因此我想我必须将每个矩阵作为一个条目来处理,但我不知道该怎么做,因为形状不同。

希望有人能帮助我。我真的被困在这里了。

您需要将矩阵重塑为二维矩阵,并确保保持正确的数学表达式。

如果我没记错的话,你想要表达的是以下等式:

W_1,1 x_1 + W_1,2 x_2 + ... + W_1,150 x_150 + U_1,1 x_151 + ... + U_11,1 x_161 = 0
...
W_150,1 x_1 + W_150,2 x_2 + ... + W_150,150 x_150 + U_1,150 x_151 + ... + U_11,150 x_161 = 0
U_1,1 x_1 + ... + U_1,150 x_150 = y_1
...
U_11,1 x_1 + ... + U_11,150 x_150 = y_11

因此,您需要一个形状为 (161, 161) 的矩阵 A,其中左上角填充了 W(150x150) 个元素,右上角是填充 U.T(150x11) 个元素,左下角填充 U 的 (11x150) 个元素,右下角填充 (11x11) 个零。 您的数组 b 的形状为 (161,),包含 151 个零和 y.

的 11 个元素

即:

A[:150,:150] = W
A[:150,150:] = U.T
A[150:,:150] = U
A[150:,150:] = 0

b[:150] = 0
b[150:] = y

确保你所有的数量都是 numpy 数组。 结果 x 的形状也将是 (161,)。

我认为 np.linalg.solve 不支持嵌套维度。但它不应该是必要的。