The sample case of the issue ( https://github.com/numpy/numpy/issues/5558 ) is 
shown below. A proposal to address this behavior can be found here ( 
https://github.com/numpy/numpy/pull/5580 ). Please give me your feedback.


I tried to change the mask of `a` through a subindexed view, but was unable. 
Using this setup I can reproduce this in the 1.9.1 version of NumPy.

    import numpy as np

    a = np.arange(6).reshape(2,3)
    a = np.ma.masked_array(a, mask=np.ma.getmaskarray(a), shrink=False)

    b = a[1:2,1:2]

    c = np.zeros(b.shape, b.dtype)
    c = np.ma.masked_array(c, mask=np.ma.getmaskarray(c), shrink=False)
    c[:] = np.ma.masked

This yields what one would expect for `a`, `b`, and `c` (seen below).

     masked_array(data =
       [[0 1 2]
        [3 4 5]],
                  mask =
       [[False False False]
        [False False False]],
             fill_value = 999999)

     masked_array(data =
       [[4]],
                  mask =
       [[False]],
             fill_value = 999999)

     masked_array(data =
       [[--]],
                  mask =
       [[ True]],
             fill_value = 999999)

Now, it would seem reasonable that to copy data into `b` from `c` one can use 
`__setitem__` (seen below).

     b[:] = c

This results in new data and mask for `b`.

     masked_array(data =
       [[--]],
                  mask =
       [[ True]],
             fill_value = 999999)

This should, in turn, change `a`. However, the mask of `a` remains unchanged 
(seen below).

     masked_array(data =
       [[0 1 2]
        [3 0 5]],
                  mask =
       [[False False False]
        [False False False]],
             fill_value = 999999)



Best,
John
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to