有没有一种方法可以加速双循环,从前一次迭代更新其值?在Python中加速双循环
在代码:
def calc(N, m):
x = 1.0
y = 2.0
container = np.zeros((N, 2))
for i in range(N):
for j in range(m):
x=np.random.gamma(3,1.0/(y*y+4))
y=np.random.normal(1.0/(x+1),1.0/sqrt(x+1))
container[i, 0] = x
container[i, 1] = y
return container
calc(10, 5)
正如你可以看到,内循环,而外环且具有x每次一个不同的值开始更新变量x和y。我不认为这是矢量化的,但也许还有其他可能的改进。
谢谢!
“第二个循环更新变量x和y,而第一个循环每次都以不同的x值开始” - 我不确定你这意味着。特别是,我不知道你的意思是“每次以不同的x值开始”,而“第一”或“第二”循环与“内部”或“外部”相比相当不清楚。我不完全确定哪个是哪个。 – user2357112
对不起,我想不出比用'xrange'替换'range'更好。也许你应该在这个问题上提出一个奖励来吸引一位'numpy'专家 – inspectorG4dget
抱歉。你是对的。我会改变第一个或第二个循环的事情。通过_starts每次的x值不同,我的意思是外层循环的第一次迭代以x = 1.0开始。但是,x在内部循环中被修改。因此,在外循环的第二次迭代中,x是另一个值。 –