Python 如何将矩阵转换为包含单位矩阵的矩阵

Python 如何将矩阵转换为包含单位矩阵的矩阵,python,numpy,scipy,linear-algebra,Python,Numpy,Scipy,Linear Algebra,我想使用numpy/scipy从n*m数组中获取转换后的数组包含单位矩阵 from n*m matrix array([[ a, b, c, d, e, f], [ g, h, i, j, k, l], [ m, n, o, p, q, r]]) to array([[ 1, 0, 0, a', b', c'], [ 0, 1, 0, d', e', f'], [ 0, 0, 1, g', h', i

我想使用numpy/scipy从n*m数组中获取转换后的数组包含单位矩阵

from n*m matrix
array([[ a,  b,  c,  d, e, f],
       [ g,  h,  i,  j, k, l],
       [ m,  n,  o,  p, q, r]])

to

array([[ 1,  0,  0,  a', b', c'],
       [ 0,  1,  0,  d', e', f'],
       [ 0,  0,  1,  g', h', i']])
数组前面有一个单位矩阵。我想要那些数组

高斯-乔丹算法和高斯消去算法可以将矩阵变换为包含单位矩阵的矩阵。但这不能转换任何n*m矩阵,在numpy/scipy中也没有转换函数

from n*m matrix
array([[ a,  b,  c,  d, e, f],
       [ g,  h,  i,  j, k, l],
       [ m,  n,  o,  p, q, r]])

to

array([[ 1,  0,  0,  a', b', c'],
       [ 0,  1,  0,  d', e', f'],
       [ 0,  0,  1,  g', h', i']])

有人知道好的解决方案吗?

高斯算法仍然可以应用,因为它可以通过只合并输入行来实现。那么,给定行末尾的附加值的数量就无关紧要了

不检查零的示例步骤(即,如果所有值都为零,如何执行此操作)≠ 0):


我希望现在道路畅通。当然,您必须检查零(可能交换线)以避免除以它们,但这是应用高斯的正常方式。

如果允许numpy.linalg,则

import numpy as np
n, m = A.shape
assert n < m
B = np.linalg.solve(A[:, :n], A[:, n:])
C = np.hstack((np.identity(n), B))
将numpy导入为np
n、 m=A.形状
断言n

将完成您的工作。

允许哪些转换步骤?你在反转矩阵时也使用的那些?都可以,当然,反转矩阵是汉克斯,但它不起作用(例如3*6大小的矩阵)。它的代码是:奇异矩阵。我的转换是
C=inv(A[:,:n])*A
,这意味着行的组合没有排列列。对不起,如果这对你来说不够一般。哦,我忘了基本的,因为我专心于寻找合适的功能。这是一个很好的解决方案。谢谢