[Numpy-discussion] arrays and __eq__
Keith Goodman
kwgoodman at gmail.com
Fri Jan 1 15:23:17 EST 2010
I have a class that stores some of its data in a numpy array. I can
check for equality when myclass is on the left and an array is on the
right:
>> m = myclass([1,2,3])
>> a = np.asarray([9,2,3])
>>
>> m == a
myclass([False, True, True], dtype=bool)
But I get the wrong answer when an array is on the left and myclass is
on the right:
>> a == m
array([ True, True, True], dtype=bool)
import numpy as np
class myclass(object):
def __init__(self, arr):
self.arr = np.asarray(arr)
def __eq__(self, other):
if np.isscalar(other) or isinstance(other, np.ndarray):
x = myclass(self.arr.copy())
x.arr = x.arr == other
else:
raise TypeError, 'This example just tests numpy arrays and
scalars.'
return x
def __repr__(self):
return 'myclass' + repr(self.arr).split('array')[1]
I've run into a similar problem with __radd__ but the solution to that
problem doesn't work for __eq__:
http://www.mail-archive.com/numpy-discussion@scipy.org/msg09476.html
More information about the NumPy-Discussion
mailing list