Python中4x3矩阵转置为3x4矩阵时报索引越界错误问题求解
错误原因
- 循环范围和转置矩阵维度不匹配
你使用的原矩阵a是4行3列结构,len(a)=4对应原矩阵的行总数,len(a[0])=3对应原矩阵的列总数。你预定义的转置矩阵T是3行4列结构,有效行索引范围仅为0~2。你的外层循环用range(len(a))会让变量i取到0、1、2、3,当i=3时访问T[i][j]等价于访问T的第4行,超出T的总行数,直接触发索引越界。 - 赋值索引顺序写反
矩阵转置的核心逻辑是原矩阵第i行第j列的元素,对应转置矩阵第j行第i列的位置,即T[j][i] = a[i][j]。你写的T[i][j] = a[j][i]逻辑完全倒置,就算解决了越界问题也无法得到正确的转置结果,还会额外触发原矩阵a的索引越界。
修复方案
方案1:调整原有循环逻辑
仅修改赋值顺序即可正常运行:
for i in range(len(a)): for j in range(len(a[0])): T[j][i] = a[i][j]
方案2:Python原生简便写法
利用zip函数可以快速实现矩阵转置,无需手动初始化结果矩阵:
T = list(map(list, zip(*a)))
内容的提问来源于stack exchange,提问作者Anseka O
相关产品推荐
相关产品推荐

