[Numpy-discussion] Operations on a masked array of a scalar
Pierre GM
pgmdevlist at gmail.com
Tue Jun 29 13:58:41 EDT 2010
On Jun 29, 2010, at 1:41 PM, Martin Janousek wrote:
> Hi,
>
> I have a Python code working on MaskedArray which can produce arrays
> of a number of different shapes and ranks. In an extreme case I get
> "an array" constructed from a scalar:
>
> x=numpy.ma.array(333.,mask=False)
>
> Until the recent upgrade to Numpy 1.4.1 it has been possible to do
> operations on such an object, like x+=2. or x==444. but now I have
> the following problem:
>
>>>> numpy.ma.array(333.,mask=False)==1.
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/local/apps/python/2.6/lib/python2.6/site-packages/numpy/ma/core.py",
> line 3567, in __eq__
> check._mask = self._mask
> AttributeError: 'numpy.bool_' object has no attribute '_mask'
>
> The problem seems to be only with __eq__ and __ne__ operators, others
> like __gt__ are ok:
>>>> numpy.ma.array(333.,mask=False)>1.
> masked_array(data = True,
> mask = False,
> fill_value = True)
>
> For ndarray it works fine as well:
>>>> numpy.array(333.)==1.
> False
>
>
> So did I find a bug or working with a "scalar array" is considered
> dangerous and as such it should be avoided? In any case the behaviour
> of Numpy 1.4.1 compared to 1.2.1 has changed in this aspect.
That's a bug allright, sorry about that. Thought I took care of it, obviously not. Anyhow, it should be fixed in SVNr8467.
More information about the NumPy-Discussion
mailing list