On Mon, Oct 19, 2015 at 8:28 PM, Nathan Goldbaum <nathan12...@gmail.com> wrote:
> > > On Mon, Oct 19, 2015 at 7:23 PM, Jonathan Helmus <jjhel...@gmail.com> > wrote: > >> In GitHub issue #3474, a number of us have started a conversation on how >> NumPy's copy function should behave when passed an instance which is a >> sub-class of the array class. Specifically, the issue began by noting that >> when a MaskedArray is passed to np.copy, the sub-class is not passed >> through but rather a ndarray is returned. >> >> I suggested adding a "subok" parameter which controls how sub-classes are >> handled and others suggested having the function call a copy method on duck >> arrays. The "subok" parameter is implemented in PR #6509 as an example. >> Both of these options would change the API of numpy.copy and possibly break >> backwards compatibility. Do others have an opinion of how np.copy should >> handle sub-classes? >> >> For a concrete example of this behavior and possible changes, what type >> should copy_x be in the following snippet: >> >> import numpy as np >> x = np.ma.array([1,2,3]) >> copy_x = np.copy(x) >> > > FWIW, it looks like np.copy() is never used in our code to work with the > ndarray subclass we maintain in yt. Instead we use the copy() method much > more often, and that returns the appropriate type. I guess it makes sense > to have the type of the return value of np.copy() agree with the type of > the copy() member function. > > That said, breaking backwards compatibility here before numpy 2.0 might > very well break real code. It might be worth it search e.g. github for all > instances of np.copy() to see if they're dealing with subclasses. > The problem with github searches is that there are a ton of numpy forks. ISTR once finding a method to avoid them, but can't remember what is was. If anyone knows how to do that, I'd appreciate learning. Chuck
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion