On Mon, Aug 10, 2009 at 9:10 AM, <josef.p...@gmail.com> wrote: > On Mon, Aug 10, 2009 at 11:55 AM, Keith Goodman<kwgood...@gmail.com> wrote: >> On Thu, Aug 6, 2009 at 9:07 AM, Robert Kern<robert.k...@gmail.com> wrote: >>> On Thu, Aug 6, 2009 at 11:03, Keith Goodman<kwgood...@gmail.com> wrote: >>>> On Thu, Aug 6, 2009 at 8:55 AM, <josef.p...@gmail.com> wrote: >>>>> What's the best way of getting back the correct shape to be able to >>>>> broadcast, mean, min,.. to the original array, that works for >>>>> arbitrary dimension and axis? >>>>> >>>>> I thought I have seen some helper functions, but I don't find them >>>>> anymore? >>>>> >>>>> Josef >>>>> >>>>>>>> a >>>>> array([[1, 2, 3, 3, 0], >>>>> [2, 2, 3, 2, 1]]) >>>>>>>> a-a.max(0) >>>>> array([[-1, 0, 0, 0, -1], >>>>> [ 0, 0, 0, -1, 0]]) >>>>>>>> a-a.max(1) >>>>> Traceback (most recent call last): >>>>> File "<pyshell#135>", line 1, in <module> >>>>> a-a.max(1) >>>>> ValueError: shape mismatch: objects cannot be broadcast to a single shape >>>>>>>> a-a.max(1)[:,None] >>>>> array([[-2, -1, 0, 0, -3], >>>>> [-1, -1, 0, -1, -2]]) >>>> >>>> Would this do it? >>>> >>>>>> pylab.demean?? >>>> Type: function >>>> Base Class: <type 'function'> >>>> String Form: <function demean at 0x3c5c050> >>>> Namespace: Interactive >>>> File: /usr/lib/python2.6/dist-packages/matplotlib/mlab.py >>>> Definition: pylab.demean(x, axis=0) >>>> Source: >>>> def demean(x, axis=0): >>>> "Return x minus its mean along the specified axis" >>>> x = np.asarray(x) >>>> if axis: >>>> ind = [slice(None)] * axis >>>> ind.append(np.newaxis) >>>> return x - x.mean(axis)[ind] >>>> return x - x.mean(axis) >>> >>> Ouch! That doesn't handle axis=-1. >>> >>> if axis != 0: >>> ind = [slice(None)] * x.ndim >>> ind[axis] = np.newaxis >> >> Ouch! That doesn't handle axis=None. >> >> if axis: >> ind = [slice(None)] * x.ndim >> ind[axis] = np.newaxis > > that's why I used > > if axis != 0 and not axis is None: > > and included a testcase for None. (although my version looks a bit > verbose but explicit)
I'm getting better. I'm only 3 days behind this time. Yeah, I caught it on a unit test too. _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion