Python四层for循环计算1×10维向量aa的错误排查问询
代码问题梳理
- 四层嵌套循环会遍历所有变量的排列组合,最终会产生10^4个计算结果,和你需要的1×10维向量要求不匹配。你提供的四个输入数组均为长度10的数组,只需取相同索引位置的元素配对计算即可,不需要遍历所有组合
- 没有提前初始化存储计算结果的数组,每次循环都会直接覆盖
aa的旧值,最终只能得到最后一次运算的单个数值,无法输出向量 - 代码中导入的
matplotlib、math库当前逻辑没有用到,可以删除
修正方案
方案1:循环写法
import numpy as np a = 2 dell = np.linspace(20, 40, num=10) x = np.linspace(10, 10, num=10) y = np.linspace(10, 10, num=10) r = np.linspace(-3,5, num=10) # 初始化长度为10的数组存储结果 aa = np.zeros(10) # 按索引取值配对计算 for i in range(10): aa[i] = a * (x[i] + y[i]) / y[i] + r[i] + dell[i] print(aa)
方案2:numpy向量化写法(无需循环,效率更高)
numpy数组支持直接整体运算,会自动按元素位置对应计算,不需要手动写循环:
import numpy as np a = 2 dell = np.linspace(20, 40, num=10) x = np.linspace(10, 10, num=10) y = np.linspace(10, 10, num=10) r = np.linspace(-3,5, num=10) aa = a * (x + y) / y + r + dell print(aa)
内容的提问来源于stack exchange,提问作者voo
相关产品推荐
相关产品推荐

