[Numpy-discussion] Comparing rows in a structured masked array raises exception

Tom Aldcroft aldcroft@head.cfa.harvard....
Sun Oct 21 11:39:56 CDT 2012


When comparing rows of a structured masked array I'm getting an
exception.  A similar operation on an structured ndarray gives the
expected True/False result.  Note that this exception only occurs if
one or more of the mask values are True, since otherwise both row
objects are np.void and the ndarray behavior is obtained.  (See PR
#483, which seems like a good idea to me, compatibility issues
notwithstanding).

>>> from numpy import ma
>>> marr = ma.array([(1,2), (3,4)], dtype=[('x', int), ('y', int)])
>>> marr.mask[0][0] = True
>>> marr.mask[1][0] = True
>>> marr[0] == marr[1]
Traceback (most recent call last):
  File "<ipython-input-5-fecaee6f2991>", line 1, in <module>
    marr[0] == marr[1]
  File "/data/cosmos2/ska/arch/x86_64-linux_CentOS-5/lib/python2.7/site-packages/numpy/ma/core.py",
line 3573, in __eq__
    check = ndarray.__eq__(self.filled(0), odata).view(type(self))
TypeError: descriptor '__eq__' requires a 'numpy.ndarray' object but
received a 'numpy.void'

>>> arr = np.array([(1,2), (3,4)], dtype=[('x', int), ('y', int)])
>>> arr[0] == arr[1]
False

>>> np.__version__
'1.6.2'

Thanks,
Tom


More information about the NumPy-Discussion mailing list