[Numpy-discussion] basearray lives!

Sasha ndarray at mac.com
Sun Apr 30 20:27:09 CDT 2006


Let me add my $.02.  I am very much in favor of a basic array object. 
 I would probably go much further than Tim in simplifying it.  No need
for repr/str.  No number protocol.  No sequence/mapping protocol
either.  Maybe even no dimensions/striding etc.  What is left?  Not
much on top of buffer protocol: the type description.

I've expressed this opinion several times before (and was criticised
for not supporting it:-): I don't think a basearray should be a base
class.  The main reason is that in most cases subclasses will need to
adapt all the array methods. In many cases (speaking from ma
experience, but probably matrix folks can relate) the adaptation is
not automatic and has to be done on the method by method bases. 
Exposure of the base class methods without adaptation or with wrong
adaptation leads to errors.  Unless the base array is truly
minimalistic and stays this way, methods that are added to the base
class in the future will likely not work unadapted.

The only implementation that uses inheritance that I will like would
be something similar to python's object type: rich C API and no Python
API.

Would you consider checking your implementation in without modifying
ndarray's tp_base?




On 4/30/06, Tim Hochberg <tim.hochberg at cox.net> 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)
> True
>  >>> type(ba)
> <type 'numpy.basearray'>
>  >>> type(a)
> <type 'numpy.ndarray'>
>  >>> len(dir(ba))
> 19
>  >>> len(dir(a))
> 156
>
>
> 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.
>
>
>
> -tim
>
>
>
>
> -------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Numpy-discussion mailing list
> Numpy-discussion at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/numpy-discussion
>




More information about the Numpy-discussion mailing list