> 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 >
_______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
