Re: [Numpy-discussion] Equality not working as expected with ndarray sub-class
On Thu, Jul 4, 2013 at 9:12 AM, sebastian wrote: > On 2013-07-04 15:06, Thomas Robitaille wrote: > > Hi everyone, > > > > The following example: > > > > import numpy as np > > > > class SimpleArray(np.ndarray): > > > > __array_priority__ = 1 > > > > def __new__(cls, input_array, info=None): > > return np.asarray(input_array).view(cls) > > > > def __eq__(self, other): > > return False > > > > a = SimpleArray(10) > > print (np.int64(10) == a) > > print (a == np.int64(10)) > > > > gives the following output > > > > $ python2.7 eq.py > > True > > False > > > > so that in the first case, SimpleArray.__eq__ is not called. Is this a > > bug, and if so, can anyone think of a workaround? If this is expected > > behavior, how do I ensure SimpleArray.__eq__ gets called in both > > cases? > > > > This should be working in all development versions. I.e. NumPy >1.7.2 > (which is not released yet). > I think you mean: NumPy >= 1.7.2 Fred ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] Equality not working as expected with ndarray sub-class
On 2013-07-04 15:06, Thomas Robitaille wrote: > Hi everyone, > > The following example: > > import numpy as np > > class SimpleArray(np.ndarray): > > __array_priority__ = 1 > > def __new__(cls, input_array, info=None): > return np.asarray(input_array).view(cls) > > def __eq__(self, other): > return False > > a = SimpleArray(10) > print (np.int64(10) == a) > print (a == np.int64(10)) > > gives the following output > > $ python2.7 eq.py > True > False > > so that in the first case, SimpleArray.__eq__ is not called. Is this a > bug, and if so, can anyone think of a workaround? If this is expected > behavior, how do I ensure SimpleArray.__eq__ gets called in both > cases? > This should be working in all development versions. I.e. NumPy >1.7.2 (which is not released yet). - Sebastian > Thanks, > Tom > > ps: cross-posting to stackoverflow > ___ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
Re: [Numpy-discussion] Equality not working as expected with ndarray sub-class
Hi, __array__priority wasn't checked for ==, !=, <, <=, >, >= operation. I added it in the development version and someone else back-ported it to the 1.7.X branch. So this will work with the next release of numpy. I don't know of a workaround until the next release. Fred On Thu, Jul 4, 2013 at 9:06 AM, Thomas Robitaille < thomas.robitai...@gmail.com> wrote: > Hi everyone, > > The following example: > > import numpy as np > > class SimpleArray(np.ndarray): > > __array_priority__ = 1 > > def __new__(cls, input_array, info=None): > return np.asarray(input_array).view(cls) > > def __eq__(self, other): > return False > > a = SimpleArray(10) > print (np.int64(10) == a) > print (a == np.int64(10)) > > gives the following output > > $ python2.7 eq.py > True > False > > so that in the first case, SimpleArray.__eq__ is not called. Is this a > bug, and if so, can anyone think of a workaround? If this is expected > behavior, how do I ensure SimpleArray.__eq__ gets called in both > cases? > > Thanks, > Tom > > ps: cross-posting to stackoverflow > ___ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
[Numpy-discussion] Equality not working as expected with ndarray sub-class
Hi everyone, The following example: import numpy as np class SimpleArray(np.ndarray): __array_priority__ = 1 def __new__(cls, input_array, info=None): return np.asarray(input_array).view(cls) def __eq__(self, other): return False a = SimpleArray(10) print (np.int64(10) == a) print (a == np.int64(10)) gives the following output $ python2.7 eq.py True False so that in the first case, SimpleArray.__eq__ is not called. Is this a bug, and if so, can anyone think of a workaround? If this is expected behavior, how do I ensure SimpleArray.__eq__ gets called in both cases? Thanks, Tom ps: cross-posting to stackoverflow ___ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion