gpt4 book ai didi

python - 有没有一种简单的方法来交换矩阵中的行以在左侧形成单位矩阵

转载 作者:行者123 更新时间:2023-12-02 16:21:15 26 4
gpt4 key购买 nike

给定一个矩阵 A,它可以是方形的,但很可能是矩形的;鉴于可以在 Rank(A) 最左边的列上形成一个单位矩阵,是否有一种很好的行交换方法来实现这个单位矩阵?

例如,开始于

import numpy as np
row1 = np.array([1, 0, 0, 2, 3])
row2 = np.array([0, 0, 1, 4, 5])
row3 = np.array([0, 1, 0, 6, 7])
A = np.array([row1, row2, row3])

我想拥有

row1 = np.array([1, 0, 0, 2, 3])
row2 = np.array([0, 1, 0, 6, 7])
row3 = np.array([0, 0, 1, 4, 5])
A = np.array([row1, row2, row3])

我希望这是通用的,可能需要交换超过 1 行,并且矩阵的大小没有限制。也不能保证交换将是相邻的行。时间不重要,即效率不重要。不需要交换列。组成 Rank(A) 单位矩阵的列将在左侧。

更难的“测试用例”是

row1 = np.array([0, 0, 0, 0, 1, 5, 6, 7])
row2 = np.array([0, 0, 1, 0, 0, 1, 4, 2])
row3 = np.array([0, 0, 0, 1, 0, 6, 8, 4])
row4 = np.array([0, 1, 0, 0, 0, 1, 1, 1])
row5 = np.array([1, 0, 0, 0, 0, 6, 8, 4])
A = np.array([row1, row2, row3, row4, row5])

最佳答案

请注意,A 的混洗标识部分是酉矩阵。

并且由于单位矩阵排列的属性,这意味着您可以简单地将 A 乘以 A[:rows, :rows].T(单位 perm部分):

rows = 3 # the number of rows

A = A[:rows, :rows].T.dot(A)

结果; A = :

array([[1, 0, 0, 2, 3],
[0, 1, 0, 6, 7],
[0, 0, 1, 4, 5]])

谁的行被切换以形成标识。

关于python - 有没有一种简单的方法来交换矩阵中的行以在左侧形成单位矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65403670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com