[Numpy-discussion] Add guaranteed no-copy to array creation and reshape?

Sebastian Berg sebastian at sipsolutions.net
Fri Dec 28 08:39:58 EST 2018


On Thu, 2018-12-27 at 17:45 -0800, Nathaniel Smith wrote:
> On Thu, Dec 27, 2018 at 3:27 PM Juan Nunez-Iglesias <
> jni.soma at gmail.com> wrote:
> > On Fri, Dec 28, 2018, at 3:40 AM, Sebastian Berg wrote:
> > 
> > > It’s consistent with np.newaxis in spelling (modulo the _)
> > > If mistyped, it can be caught easily by IDEs.
> > > It’s typeable with mypy, unlike constant string literals which
> > > currently aren’t
> > > If code written against new numpy is run on old numpy, it will
> > > error
> > > rather than doing the wrong thing
> > 
> > I am not sure I think that the above are too strong arguments,
> > since it
> > is not what is typically done for keywords (nobody suggests np.CLIP
> > instead of "clip"). Unless you feel this is different because it is
> > a
> > mix of strings and bools here?
> > 
> > 
> > :+1: to Eric's list. I don't think it's different because of the
> > mix, I think it's different because deprecating things is painful.
> > But now that we have good typing in Python, I think of string
> > literals as an anti-pattern going forward.
> 
> I've certainly seen people argue that it's better to use proper
> enum's
> in this kind of case instead of strings. The 'enum' package is even
> included in the stdlib on all our supported versions now:
> https://docs.python.org/3/library/enum.html
> 

I am sympathetic with that, but it is something we (or scipy, etc.) 
currently simply do not use, so I am not sure that I think it has much
validity at this time. That is least unless we agree to aim to use this
more generally in the future.

> I guess another possibility to throw out there would be a second
> kwarg, require_view=False/True.
> 

My first gut feeling was that it is clumsy at least for `reshape`, but
one will always only use one of the two arguments at a time.
The more I look at it, the better the suggestion seems. Plus it reduces
the possible `copy=False` not meaning "never" confusion.

I think with a bit more pondering, that will become my favorite
solution.

- Sebastian


> -n
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20181228/4c505006/attachment.sig>


More information about the NumPy-Discussion mailing list