[Numpy-discussion] iterate over multiple arrays

Robert Kern robert.kern@gmail....
Mon Sep 12 13:41:38 CDT 2011


On Mon, Sep 12, 2011 at 01:52, David Froger <david.froger@gmail.com> wrote:
> Hy everybody,
>
> I'm wondering what is the (best) way to apply the same function to multiple
> arrays.
>
> For example, in the following code:
>
> from numpy import *
>
> def f(arr):
>     return arr*2
>
> a = array( [1,1,1] )
> b = array( [2,2,2] )
> c = array( [3,3,3] )
> d = array( [4,4,4] )
>
> a = f(a)
> b = f(b)
> c = f(c)
> d = f(d)
>
> I would like to replace :
>
> a = f(a)
> b = f(b)
> c = f(c)
> d = f(d)

This is usually the best thing to do for few variables and simple
function calls. If you have many more variables, you should be keeping
them in a list or dict instead of individual named variables. If you
have a complicated expression, wrap it in a function.

You could also do something like this:

  a,b,c,d = map(f, [a,b,c,d])

but it's harder to understand what is going on that just using four
separate lines and no easier to maintain.

Don't use eval() or locals().

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco


More information about the NumPy-Discussion mailing list