How to "reduce" a numpy array using a costum binary function

Slaunger Slaunger at gmail.com
Fri Nov 14 02:13:00 EST 2008


On 13 Nov., 22:48, Robert Kern <robert.k... at gmail.com> wrote:
> Slaunger wrote:
> > It is always good to ask yourself a question.
> > I had forgooten about the reduce function
>
> > I guess this implementation
>
> > from numpy import *
>
> > def compl_add_uint16(a, b):
> >     c = a + b
> >     c += c >> 16
> >     return c & 0xFFFF
>
> > def compl_one_checksum(uint16s):
> >     return reduce(compl_add_uint16, uint16s, 0x0000)
>
> > is somewhat better?
>
> > But is it the best way to do it with numpy?
>
> It's not too bad, if you only have 1D arrays to worry about (or you are only
> concerned with reducing down the first axis). With a Python-implemented
> function, there isn't much that will get you faster.

Yes, I only have 1D arrays in this particular problem.

>
> My coworker Ilan Schnell came up with a neat way to use PyPy's RPython->C
> translation scheme and scipy.weave's ad-hoc extension module-building
> capabilities to generate new numpy ufuncs (which have a .reduce() method)
> implemented in pure RPython.
>
>    http://conference.scipy.org/proceedings/SciPy2008/paper_16/full_text.pdf
>    http://svn.scipy.org/svn/scipy/branches/fast_vectorize/
>

OK. Thanks. I am still a rather inexperienced SciPy and Python
programmer, and I must admit
that right now this seems to be in the advanced end for me. But, now
that you
mention weave I have given it a thought to reimplement my binary compl
add function
shown above using weave - if my profiler says that is where I should
be spending my
time optimizing.

> If you have more numpy questions, please join us on the numpy mailing list.
>
>    http://www.scipy.org/Mailing_Lists
>

Thank you for directing me to that numpy specific mailing list.
I have been on scipy.org many times, but apparently overlooked
that very prominent link to mailing lists.

Slaunger

> --
> 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- Skjul tekst i anførselstegn -
>
> - Vis tekst i anførselstegn -




More information about the Python-list mailing list