You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中定义特定时序递推循环的代码修正问题

问题根因

代码输出不符合预期是两处逻辑错误导致的:

  • 误用循环变量t参与sigma计算:第二次迭代时t=1,代码执行sigma = v*t +1,既给前序v值多加了常数1,又错误将t作为系数乘到v上
  • 递推顺序不符合规则:该递推的初始条件为第一步sigma取全1矩阵,每轮迭代先用当前sigma计算对应v,下一轮的sigma直接复用本轮算出的v即可,不需要额外做算术变换。
修正后代码
import numpy as np
N = 2
ar1 = []
ar2 = []
R = np.array([[1.1, 1.2, 1.3], [1.4, 1.5, 1.6], [1.7, 1.8, 1.9]])
# 初始化第一步的sigma为全1矩阵
sigma = np.ones((3, 3))

for _ in range(N):
    ar1.append(sigma)
    v = sigma * R
    ar2.append(v)
    # 下一轮sigma取当前轮计算得到的v
    sigma = v

I1 = np.array(ar1)
I2 = np.array(ar2)
print("I1 =", [I1])
print("I2 =", [I2])
运行结果

执行上述代码将输出与预期完全一致的结果:

I1 = [array([[[1. , 1. , 1. ],
        [1. , 1. , 1. ],
        [1. , 1. , 1. ]],

       [[1.1, 1.2, 1.3],
        [1.4, 1.5, 1.6],
        [1.7, 1.8, 1.9]]])]
I2 = [array([[[1.1 , 1.2 , 1.3 ],
        [1.4 , 1.5 , 1.6 ],
        [1.7 , 1.8 , 1.9 ]],

       [[1.21, 1.44, 1.69],
        [1.96, 2.25, 2.56],
        [2.89, 3.24, 3.61]]])]

优化说明:该实现去掉了循环中无意义的重复数组转换,将I1、I2的数组转换操作放到循环结束后执行,运行效率更高。

内容的提问来源于stack exchange,提问作者Wiz123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:31:09