【发布时间】:2013-09-20 12:10:25
【问题描述】:
我正在尝试加快我的代码速度。最大的问题是我有几个嵌套循环(它们必须迭代超过 25000 个单元)。然而,当我试图摆脱这些嵌套循环时,我得到了不同的结果,我似乎不明白为什么。
这是嵌套循环之一:
for i in range(N):
for j in range(N):
# value added in sector i (month k+1)
VA[i,k+1]= VA[i,k+1] - IO[j,i]*(Produc[i,k+1]/Produc[i,0])
这是我为摆脱内部循环所做的:
for in range(N):
VA[i,k+1]=VA[i,k+1] - np.sum(IO[:,i])*(Produc[i,k+1]/Produc[i,0])
非常感谢您的帮助。
【问题讨论】:
-
使用 xrange 代替 range(对于 Python 版本
-
IO 的大小是多少?在第一种情况下(内循环),你在 j 上从 0 总结到 N-1,在第二种情况下,在 j 上总结从 0 到 len(IO)-1
-
@GrijeshChauhan:试图让你的单一代码库在你已经使用的解释器上变得非常低效,从而使其面向未来似乎是个坏主意。
-
@GrijeshChauhan,不完全是我所说的“更便携”。代码的含义和性能有很大的不同。在很多情况下,它只是具有相同的最终结果。 2to3 会更好地完成这种转换。
-
你能举例说明两个不同的结果吗?差异是否可能是由于浮点值的截断?
标签: python numpy nested-loops