[Numpy-discussion] Numpy BoF at SciPy 2014 - quick report

Charles R Harris charlesr.harris at gmail.com
Fri Jul 18 09:18:59 EDT 2014


On Fri, Jul 18, 2014 at 2:03 AM, Sebastian Berg <sebastian at sipsolutions.net>
wrote:

> On Do, 2014-07-17 at 09:48 -0400, Robert Lupton the Good wrote:
> > Having just re-read the PEP I'm concerned that this proposal leaves at
> least one major (?) trap for naive users, namely
> >       x = np.array([1, 10])
> >       print X.T at x
> > which will print 101, not [[1, 10], [10, 100]]
> >
> > Yes, I know why this is happening but it's still a problem -- the user
> said, "I'm thinking matrices" when they wrote @ but the x.T had done the
> "wrong" thing before the @ kicked in.  And yes, a savvy user would have
> written x = np.ones([[1, 10]]) (but then np.dot(x, x.T) isn't a scalar).
> >
> > This is the way things are at present, but with the new @ syntax coming
> in I think we should consider fixing it.
> >
> > I can think of three possibilities:
> >       1. Leave this as a trap for the unwary, and a reason for people to
> stick to np.matrix (np.matrix([1, 10]) behaves "correctly")
> >       2. Make x.T a syntax error for 1-D arrays.  It's a no-op and IMHO
> a trap.
> >       3. Make x.T promote the shape == (2,) array to (1, 2) and return a
> (2, 1) array.  This may be too magic, but it's my preferred solution.
> >
>
> Making it a warning may be another option. Changing `.T` to promote to
> 2-d (also maybe to actually only transpose the last two axes for higher
> D arrays), could be nice, but getting there might take quite a long
> FutureWarning or even Error -> new feature cycle...
>

I've toyed some with the idea of adding a flag bit for transpose of 1-d
arrays. It would flip with every transpose and be ignored for non 1-d
arrays. A bit of a hack, but would allow for a column/row vector
distinction.

Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20140718/d9a1c92e/attachment.html>


More information about the NumPy-Discussion mailing list