3

我在我的 python 代码中使用这个循环:

final_fun=[]
for i_base in xrange(n_base):
  final_fun.append(sum(fun[:,i_base])/n_ci)

我想知道如何简化这个循环?如果我简化这个循环,我的程序会更快吗?一般来说,我知道如何简化这一点,但在这里我被附加阻止了!

4

2 回答 2

8

使用列表推导。它更快更干净。for 循环可以大大减慢解释器的速度,并且只需重新排列语法就不会失去任何东西。

有关更多详细信息,请参阅此说明

final_fun = [sum(fun[:,i_base])/n_ci for i_base in xrange(n_base)]
于 2012-08-01T15:28:56.227 回答
2

它似乎fun是一个二维 NumPy 数组。在这种情况下,您可以通过完全避免 Python 循环来显着简化和加速代码:

final_fun = fun.sum(axis=0) / n_ci

你最终会得到一个 NumPy 数组而不是一个列表,但很可能这就是你想要的。

于 2012-08-01T15:51:16.387 回答