PanAkry
PanAkry

Reputation: 183

simplify a loop in python

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

Answers (2)

Sven Marnach
Sven Marnach

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

Rob Volgman
Rob Volgman

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

Related Questions