Faster way to map numpy arrays

Stefan Behnel stefan_ml at behnel.de
Mon Jun 25 03:24:52 EDT 2012


Saurabh Kabra, 25.06.2012 05:37:
> I have written a script to map a 2D numpy array(A) onto another array(B) of
> different dimension. more than one element (of array A) are summed and
> mapped to each element of array B.  To achieve this I create a list where I
> store the index of array A to be mapped to array B. The list is the
> dimension of array B (if one can technically say that) and each element is
> a list of indices to be summed. Then I parse this list with a nested loop
> and compute each element of array B.
> 
> Because of the nested loop and the big arrays the process takes a minute or
> so. My question is: is there a more elegant and significantly faster way of
> doing this in python?

I'm sure there's a way to do this kind of transformation more efficiently
in NumPy. I faintly recall that you can use one array to index into
another, something like that might do the trick already. In any case, using
a NumPy array also for the mapping matrix sounds like a straight forward
thing to try.

But you might also want to take a look at Cython. It sounds like a problem
where a trivial Cython implementation would seriously boost the performance.

http://docs.cython.org/src/tutorial/numpy.html

Stefan




More information about the Python-list mailing list