Python中列表存储矩阵增量累加操作结果错误问题求助
矩阵累加代码错误修正方案
注意:参与累加的所有矩阵必须维度完全一致,否则会出现运算错误。
原代码错误点
- 累加变量未提前初始化:循环内每次执行
a = GetMatrix('mtx'+ str(i))都会直接覆盖a的原有值,之前的累加结果完全丢失 - 重复计算同一矩阵:循环内连续两次获取同一序号的矩阵相加,单次循环的结果始终是2倍当前矩阵,没有实现多矩阵累加逻辑
- 循环区间不匹配:Python的
range为左闭右开区间,range(1,3)仅会遍历i=1、i=2两个值,不会处理序号为3的矩阵
修正代码
方案1:基于GetMatrix函数实现指定范围矩阵累加
如果需要累加mtx1到mtx3,可使用如下代码:
startNum = 1 endNum = 3 # 以第一个矩阵作为累加初始值 sum_matrix = GetMatrix(f'mtx{startNum}') # 遍历剩余矩阵依次累加 for i in range(startNum + 1, endNum + 1): current_matrix = GetMatrix(f'mtx{i}') sum_matrix += current_matrix
方案2:基于已有的mtxlist列表直接累加
如果你已经把所有矩阵存入了mtxlist,遍历列表的写法更简洁:
# 以第一个矩阵作为初始值 sum_matrix = mtxlist[0] for mtx in mtxlist[1:]: sum_matrix += mtx
如果你的矩阵是numpy数组类型,可以直接调用求和方法一步完成:
import numpy as np sum_matrix = np.sum(mtxlist, axis=0)
内容的提问来源于stack exchange,提问作者Py_junior
相关产品推荐
相关产品推荐

