不同形状矩阵的矩阵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 不支持嵌套维度。但它不应该是必要的。
我正在尝试通过 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
.
即:
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 不支持嵌套维度。但它不应该是必要的。