Python for 循环只保存我的二维数组中的最后一个循环
Python for loop only saves the last loop in my 2-d array
我正在生成一维随机游走,我希望我的 for 循环随着时间的推移保存到目前为止已经到达的原点的最大距离。生成 5 个随机游走。
这是我的代码:
for j in range(5):
r = rand(10000)
t = range(10000)
x = zeros(10000)
y = zeros((10000, 5))
for i in range(10000):
walk = r[i]
if walk < 0.5:
x[i] = x[i-1] - 1
y[:,j]= maximum.accumulate(abs(x))
else:
x[i] = x[i-1] + 1
y[:,j]= maximum.accumulate(abs(x))
plot(t,x, label="Walk %d" %(j+1))
title("1-D Random Walk (Position versus Time)")
xlabel("Time")
ylabel("Position")
legend(loc="best")
grid()
问题是for循环遍历设定范围后(5)输出的二维数组只包含最后一次迭代。
不知何故,它覆盖了之前的那些,所以我只会得到一个 10000x5 的数组,其中只填充了最后一行。
我怎样才能使这个工作?
出于某种原因,您选择了执行
y = zeros((10000, 5))
一遍又一遍,每次都通过外循环。
作为一个明显的结果,只有最后一次赋值给 y
才可能 "take",显然会覆盖任何先前对相同名称的赋值。您还可以从此类重复分配中获得哪些其他行为?!
将这个赋值移到外层循环之外,这样就不会有名字y
.
的"overriding"了
我正在生成一维随机游走,我希望我的 for 循环随着时间的推移保存到目前为止已经到达的原点的最大距离。生成 5 个随机游走。 这是我的代码:
for j in range(5):
r = rand(10000)
t = range(10000)
x = zeros(10000)
y = zeros((10000, 5))
for i in range(10000):
walk = r[i]
if walk < 0.5:
x[i] = x[i-1] - 1
y[:,j]= maximum.accumulate(abs(x))
else:
x[i] = x[i-1] + 1
y[:,j]= maximum.accumulate(abs(x))
plot(t,x, label="Walk %d" %(j+1))
title("1-D Random Walk (Position versus Time)")
xlabel("Time")
ylabel("Position")
legend(loc="best")
grid()
问题是for循环遍历设定范围后(5)输出的二维数组只包含最后一次迭代。 不知何故,它覆盖了之前的那些,所以我只会得到一个 10000x5 的数组,其中只填充了最后一行。
我怎样才能使这个工作?
出于某种原因,您选择了执行
y = zeros((10000, 5))
一遍又一遍,每次都通过外循环。
作为一个明显的结果,只有最后一次赋值给 y
才可能 "take",显然会覆盖任何先前对相同名称的赋值。您还可以从此类重复分配中获得哪些其他行为?!
将这个赋值移到外层循环之外,这样就不会有名字y
.