adding an attribute to an nd-array

Tim Hochberg tim.hochberg at
Thu Oct 19 16:34:57 CDT 2006

Christopher Barker wrote:
> Travis Oliphant wrote:
>> Actually something as simple as
>> class InfoArray(N.ndarray):
>>          pass
>> will allow you to add attributes to InfoArray.
> Well, sure, but how the heck do you initialize it?
>  >>> class InfoArray(N.ndarray):
> ...          pass
> ...
>  >>> InfoArray((1,2,3))
> InfoArray([[[  6.61855173e-306,               nan,   4.94708449e+173],
>          [  3.32457336e-309,   1.08825491e+175,   2.12468326e-314]]])
> InfoArray(N.array((1,2,3)))
> InfoArray([[[  2.17854722e-305,   1.90979621e-313,   1.90979621e-313],
>          [  1.90979621e-313,   1.90979621e-313,   1.03977794e-312]]])
> I, for one, would like a very easy to subclass version of ndarray, maybe 
> one that had a default constructor like numpy.array().
Back when I was working on basearray, I had an idea for this. Basically, 
it was to to move the ndarray constructor[1] over to basearray and make 
the ndarray constructor work just like array does now[2]. Thus 
array(args) and ndarray(args) would behave the same[2 again]. For the 
full power/complexity of the current ndarray constructor, you would 
instead use basearray(). I believe (and I did some experiments on this 
at one point), that this would allow straightforward inheritance from 
ndarray. I've been away from this for several months now, so sadly I 
forget many of the details.


[1] I know, I know, it's really __new__, but it gets used like a 
constructor so I'll call it one for the time being.
[2] Modulo the copy arg which would disappear if I had anything to with it.

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

More information about the Numpy-discussion mailing list