[Numpy-discussion] ndarray subclassing bug?

Christoph T. Weidemann ctw at cogsci.info
Sun Aug 10 14:26:33 EDT 2008


I've come across a strange behavior for classes subclassed from ndarray.
Here's a minimal example that illustrates the problem:

import numpy as np
class TestArray(np.ndarray):
    def __new__(cls, data, info=None, dtype=None, copy=False):
        subarr = np.array(data, dtype=dtype, copy=copy)
        subarr = subarr.view(cls)
        return subarr

    def sort(self,*args,**kwargs):
        print type(self)
        print type(self.base)


Now consider this:
In [1]: tst = TestArray(np.random.rand(2,3))

In [2]: tst.sort()
<class '__main__.TestArray'>
<type 'numpy.ndarray'>

In [3]: np.sort(tst)
<class '__main__.TestArray'>
<type 'NoneType'>
Out[3]:
TestArray([[ 0.90489484,  0.950291  ,  0.80753772],
       [ 0.49020689,  0.84582283,  0.61532922]])


Why whould tst.sort() show the correct base class and np.sort show
NoneType as base class for tst?
I'd appreciate any insights ...



More information about the NumPy-Discussion mailing list