【发布时间】:2020-12-22 05:28:59
【问题描述】:
给定一个矩阵 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])
【问题讨论】:
-
这能回答你的问题吗? Swap two rows in a numpy array in python
-
看我的回答。如果您需要更多解释,请 Lmk。
-
矩阵是否保证具有满秩,或者我们是否必须处理输入是秩为 3 的 4x5 矩阵的情况?
-
此时我已经修剪了矩阵,使其具有满秩
标签: python python-3.x numpy sorting