On 07/18/2017 09:52 AM, Benjamin Root wrote: > This sort of change seems very similar to the np.diag() change a few years > ago. Are there lessons we could learn from then that we could apply to here? > > Why would the returned view not be a masked array? > > Ben Root
I am in favor of the proposed change below. I'd like to merge it, but before that I want to make sure I understand your comment. Are you referring to the proposed change to make diag return a view instead of a copy? Note that this has not actually happened yet: https://github.com/numpy/numpy/issues/7661 Also, I think this case is different because it does not change core numpy, rather this is to make the MaskedArray module act more consistently with core numpy. Because of that I think it is much less problematic than the diag changes. Cheers, Allan > On Tue, Jul 18, 2017 at 9:37 AM, Eric Wieser <wieser.eric+nu...@gmail.com> > wrote: > >> When using ndarray.squeeze, a view is returned, which means you can do >> the follow (somewhat-contrived) operation: >> >>>>> def fill_contrived(a): >> a.squeeze()[...] = 2 >> return a >>>>> fill_contrived(np.array([1])) >> array(2) >> >> However, when tried with a masked array, this can fail, breaking liskov >> subsitution: >> >>>>> fill_contrived(np.ma.array([1], mask=[True])) >> MaskError: Cannot alter the masked element. >> >> This fails because squeeze breaks the contract of returning a view, >> instead deciding sometimes to return masked. >> >> There is a patch that fixes this in gh-9432 >> <https://github.com/numpy/numpy/pull/9432> - however, by necessity it >> breaks any existing code that uses m_arr.squeeze() is np.ma.masked. >> >> Is this too breaking a change? >> >> Eric >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@python.org >> https://mail.python.org/mailman/listinfo/numpy-discussion >> >> > > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@python.org > https://mail.python.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion