[Numpy-discussion] Unexpected output using numpy.ndarray and __radd__
Mark Hoffmann
Mark.Hoffmann at dk.manbw.com
Mon Dec 18 01:30:20 CST 2006
> Hi,
>
> The following issue has puzzled me for a while. I want to add a
> numpy.ndarray and an instance of my own class. I define this operation
> by implementing the methods __add__ and __radd__. My programme
> (including output) looks like:
>
> #!/usr/local/bin/python
>
> import numpy
>
> class Cyclehist:
> def __init__(self,vals):
> self.valuearray = numpy.array(vals)
>
> def __str__(self):
> return 'Cyclehist object: valuearray = '+str(self.valuearray)
>
> def __add__(self,other):
> print "__add__ : ",self,other
> return self.valuearray + other
>
> def __radd__(self,other):
> print "__radd__ : ",self,other
> return other + self.valuearray
>
> c = Cyclehist([1.0,-21.2,3.2])
> a = numpy.array([-1.0,2.2,-2.2])
> print c + a
> print a + c
>
> # ---------- OUTPUT ----------
> #
> # addprob $ addprob.py
> # __add__ : Cyclehist object: valuearray = [ 1. -21.2 3.2] [-1.
> 2.2 -2.2]
> # [ 0. -19. 1.]
> # __radd__ : Cyclehist object: valuearray = [ 1. -21.2 3.2] -1.0
> # __radd__ : Cyclehist object: valuearray = [ 1. -21.2 3.2] 2.2
> # __radd__ : Cyclehist object: valuearray = [ 1. -21.2 3.2] -2.2
> # [[ 0. -22.2 2.2] [ 3.2 -19. 5.4] [ -1.2 -23.4 1. ]]
> # addprob $
> #
> # ----------------------------
>
>
> I expected the output of "c+a" and "a+c" to be identical, however, the
> output of "a+c" gets nested in an elementwise fashion. Can anybody
> explain this? Is it a bug or a feature? I'm using Python 2.4.4c1 and
> numpy 1.0. I tried the programme using an older version of Python and
> numpy and there the result of "c+a" and "a+c" are identical.
>
>
> Regards,
>
> Mark Hoffmann
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20061218/f55017fb/attachment.html
More information about the Numpy-discussion
mailing list