Python手动实现矩阵转置出错,求问题原因及解决方法
矩阵转置函数错误分析与修复
错误根源
你当前的代码直接在原矩阵上修改元素,这会导致原始数据被提前覆盖。举个例子:
当遍历到i=0, j=1时,matrix[0][1]被替换为matrix[1][0]的原始值;但后续遍历到i=1, j=0时,matrix[1][0]已经被之前的操作改成了matrix[0][1]的原始值,而非最初的matrix[1][0]。这种覆盖会让最终矩阵出现大量重复元素,完全不符合转置的要求。
修复代码
正确的做法是创建一个新矩阵来存储转置结果,保留原矩阵的所有原始数据。以下是符合要求的实现:
def transpose(matrix): rows = matrix.shape[0] cols = matrix.shape[1] # 初始化新的转置矩阵,行列数与原矩阵互换 transposed_matrix = [[0]*rows for _ in range(cols)] for i in range(rows): for j in range(cols): # 将原矩阵[i][j]赋值给新矩阵[j][i] transposed_matrix[j][i] = matrix[i][j] # 如果输入是numpy数组,可转换为数组返回:return np.array(transposed_matrix) return transposed_matrix
测试验证
用你的示例输入测试:
输入矩阵:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
修复后的代码会输出正确的转置结果:
1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
内容的提问来源于stack exchange,提问作者Lauuu
相关产品推荐
相关产品推荐

