[Numpy-discussion] basearray lives!
oliphant.travis at ieee.org
Sun Apr 30 21:49:02 CDT 2006
Tim Hochberg wrote:
> After a fashion anyway. I implemented the simplest thing that could
> possibly work and I've left out some stuff that even I think we need
> (docstring, repr and str). Still it exists, ndarray inherits from it
> and some stuff seems to work automagically.
> >>> import numpy as n
> >>> ba = n.basearray([3,3], int, n.arange(9))
> >>> ba
> <numpy.basearray object at 0x00B29690>
> >>> a = asarray(ba)
> >>> a
> array([[0, 1, 2],
> [3, 4, 5],
> [6, 7, 8]])
> >>> a + ba
> array([[ 0, 2, 4],
> [ 6, 8, 10],
> [12, 14, 16]])
> >>> isinstance(a, n.basearray)
> >>> type(ba)
> <type 'numpy.basearray'>
> >>> type(a)
> <type 'numpy.ndarray'>
> >>> len(dir(ba))
> >>> len(dir(a))
> Travis: should I go ahead and check this into the trunk? It shouldn't
> interfear with anything. The only change to ndarray is the tp_base,
> which sets up the inheritance.
I say go ahead. We can then all deal with it there and improve upon
it. The ndarray used to inherit from another array and things worked.
Python's inheritance in C is actually quite slick. Especially for
structural issues. I agree that the basearray should have minimal
operations (I would not even define several of the protocols for it).
I'd probably only keep the buffer and mapping protocol but even then
probably only a simple mapping protocol (i.e. no fancy-indexing) that
then gets enhanced by the ndarray.
Thanks for the work.
More information about the Numpy-discussion