【发布时间】:2013-07-18 05:06:40
【问题描述】:
有没有一种方法可以加快从上一次迭代更新其值的双循环?
在代码中:
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 和 y,而外循环每次都以不同的 x 值开始。我不认为这是可矢量化的,但也许还有其他可能的改进。
谢谢!
【问题讨论】:
-
“第二个循环正在更新变量 x 和 y,而第一个循环每次都以不同的 x 值开始” - 我不确定你的意思。特别是,我不知道“每次以不同的 x 值开始”是什么意思,与“内部”或“外部”相比,“第一个”或“第二个”循环相当不清楚。我不完全确定哪个是哪个。
-
抱歉,我想不出比用
xrange替换range更多的事情了。也许你应该悬赏这个问题来吸引numpy专家 -
对不起。你说得对。我将更改第一个或第二个循环的事情。 每次都以不同的 x 值开始,我的意思是外循环的第一次迭代以 x = 1.0 开始。但是,x 在内部循环中被修改。因此,在外循环的第二次迭代中,x 是另一个值。
-
@inspectorG4dget 没问题。感谢您的帮助。
标签: python loops optimization numpy micro-optimization