[Numpy-discussion] numpy.trapz() doesn't respect subclass

Ryan May rmay31 at gmail.com
Sat Mar 27 13:00:50 EDT 2010


On Mon, Mar 22, 2010 at 8:14 AM, Ryan May <rmay31 at gmail.com> wrote:
> On Sun, Mar 21, 2010 at 11:57 PM,  <josef.pktd at gmail.com> wrote:
>> On Mon, Mar 22, 2010 at 12:49 AM, Ryan May <rmay31 at gmail.com> wrote:
>>> Hi,
>>>
>>> I found that trapz() doesn't work with subclasses:
>>>
>>> http://projects.scipy.org/numpy/ticket/1438
>>>
>>> A simple patch (attached) to change asarray() to asanyarray() fixes
>>> the problem fine.
>>
>> Are you sure this function works with matrices and other subclasses?
>>
>> Looking only very briefly at it: the multiplication might be a problem.
>
> Correct, it probably *is* a problem in some cases with matrices.  In
> this case, I was using quantities (Darren Dale's unit-aware array
> package), and the result was that units were stripped off.
>
> The patch can't make trapz() work with all subclasses. However, right
> now, you have *no* hope of getting a subclass out of trapz().  With
> this change, subclasses that don't redefine operators can work fine.
> If you're passing a Matrix to trapz() and expecting it to work, IMHO
> you're doing it wrong.  You can still pass one in by using asarray()
> yourself.  Without this patch, I'm left with copying and maintaining a
> copy of the code elsewhere, just so I can loosen the function's input
> processing. That seems wrong, since there's really no need in my case
> to drop down to an ndarray. The input I'm giving it supports all the
> operations it needs, so it should just work with my original input.

Anyone else care to weigh in here?

Ryan

-- 
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma



More information about the NumPy-Discussion mailing list