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 - 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