Reputation: 183
I am using this loop in my python code:
final_fun=[]
for i_base in xrange(n_base):
final_fun.append(sum(fun[:,i_base])/n_ci)
and I would want to know how I can simplify this loop? If I simplify this loop will my program be faster? In general I know how to simplify this but here I am blocked by the append!
Upvotes: 3
Views: 4179
Reputation: 602635
It seems fun
is a two-dimensional NumPy array. In this case, you can simplify and speed up the code significantly by completely avoiding the Python loop:
final_fun = fun.sum(axis=0) / n_ci
You will end up with a NumPy array instead of a list, but chances are this is what you want anyway.
Upvotes: 2
Reputation: 2114
Use list comprehensions. It's faster and cleaner. The interpreter can be slowed down a lot by the for loop, and there's nothing to lose by simply rearranging the syntax.
See this explanation for more details.
final_fun = [sum(fun[:,i_base])/n_ci for i_base in xrange(n_base)]
Upvotes: 8