On 13 Nov., 22:48, Robert Kern <robert.k...@gmail.comwrote:

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/proceedi.../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 -