On Feb 10, 2008 6:48 PM, Matthew Brett <[EMAIL PROTECTED]> wrote:
> > > import numpy as np
> > > a = np.arange(10)
> > > b = np.arange(10)+1
> > > a.data = b.data # raises error, but I hope you see what I mean
> > >
> > > ?
> >
> > Not really, no. Can you describe your use case in more detail?
>
> Yes - I am just writing the new median implementation.   To allow
> future optimization, I would like to have the same signature as
> mean():
>
> def median(a, axis=0, dtype=None, out=None)
>
> (axis=0 to change to axis=None default at some point).
>
> To do this, I need to copy the results of the median calculation in
> the routine into the array object given by 'out' - when passed.

Ah, I see. You definitely do not want to reassign the .data buffer in
this case. An out= parameter does not reassign the memory location
that the array object points to. It should use the allocated memory
that was already there. It shouldn't "copy" anything at all;
otherwise, "median(x, out=out)" is no better than "out[:] =
median(x)". Personally, I don't think that a function should expose an
out= parameter unless if it can make good on that promise of memory
efficency. Can you show us the current implementation that you have?

-- 
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
_______________________________________________
Numpy-discussion mailing list
Numpy-discussion@scipy.org
http://projects.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to