[Numpy-discussion] add axis to results of reduction (mean, min, ...)
Thu Aug 6 11:07:14 CDT 2009
On Thu, Aug 6, 2009 at 11:03, Keith Goodman<firstname.lastname@example.org> wrote:
> On Thu, Aug 6, 2009 at 8:55 AM, <email@example.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?
>> array([[1, 2, 3, 3, 0],
>> [2, 2, 3, 2, 1]])
>> array([[-1, 0, 0, 0, -1],
>> [ 0, 0, 0, -1, 0]])
>> Traceback (most recent call last):
>> File "<pyshell#135>", line 1, in <module>
>> ValueError: shape mismatch: objects cannot be broadcast to a single shape
>> array([[-2, -1, 0, 0, -3],
>> [-1, -1, 0, -1, -2]])
> Would this do it?
> 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)
> def demean(x, axis=0):
> "Return x minus its mean along the specified axis"
> x = np.asarray(x)
> if axis:
> ind = [slice(None)] * axis
> 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
"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
More information about the NumPy-Discussion