我正在尝试在 Python 中实现高斯消除的旋转并面临一些问题。
def pivot2(matrix,i):
# matrix is a N*N matrix
# i is the column I want to start with
m = matrix.shape[1]
for n in range(i,m):
colMax = np.argmax(abs(matrix[n:,i]), axis=0) #rowindex of highest absolute value in column
if(colMax == 0): #if max in column is in first row, stop
break;
tmpRow = copy.copy(matrix[n,:]) #create new object of same row
matrix[n,:] = matrix[colMax,:] #overwrite first row with row of max value
matrix[colMax,:] = tmpRow #overwrite old row of max value
return matrix
该代码工作i=0
得很好。但是对于i=1
我无法在整个列中搜索最大值的索引,因为它显然总是0
.
当我从 3x3 矩阵中切出这个矩阵时:
array([[ 1., 2.],
[-3., -2.]])
并使用我的argmax
功能,索引是1
. 但在我的原始矩阵中,同一行的索引是 2,它交换了错误的行。我该如何解决?
有没有更简单的方法来实现使用切片进行旋转?