在Python中寻找小矩阵

2024-05-21 02:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

def getMatrixMinor(m,i,j):
    return [row[:j] + row[j+1:] for row in (m[:i]+m[i+1:])]

上面的代码是我在堆栈溢出中找到的,为了找到矩阵的逆,但是,我在python中确实是新手。有人能用这段代码来解释构造小调矩阵的背后机制吗?在

顺便说一句,我用过这段代码,但是我不明白它是怎么工作的。在


Tags: 代码inforreturn堆栈def矩阵机制
2条回答

这个函数非常简单,用来计算第一个小矩阵。假设你有一个大小为m x m的平方矩阵,并且你想在(i,j)位置计算第一个次矩阵,你要做什么?您必须通过删除行i-th和列j-th从原始矩阵中提取一个大小为(m-1) x (m-1)的更小的矩阵,这是由函数完成的。在

具体地说,m[:i]+m[i+1:]删除i-th行并创建剩余行的新列表。对于此列表中的每一行,函数将删除元素row[j]。函数的输出是一个列表(行)的列表,表示相应的次矩阵。在

我建议您看看Python list comprehension和{a2}。在

让我们从矩阵的(i,j)th次矩阵的定义开始:

(i,j)th minor of a matrix of size n is a smaller matrix of size n-1 with the i'th row and j'th column deleted.

现在让我们看看这个python一行程序:

[row for row in (m[:i] + m[i+1:])]

m[:i]给出了m的第一个i行(请记住,我们将矩阵表示为一个行列表,在python中添加两个列表将返回一个更大的列表),现在让我们看另一个单行线:

^{pr2}$

这给了我们一行中除了j'th元素之外的所有元素(lst[a:b]给出了一个列表,其中的元素来自lst,介于a和{},排除了b

将以上两种方法结合起来,得到一个返回a new matrix with i'th row and j'th column excluded的表达式:

def getMatrixMinor(m,i,j):
    return [row[:j] + row[j+1:] for row in (m[:i]+m[i+1:])]

这是次矩阵。在

相关问题 更多 >