Discussion:
[Numpy-discussion] what would you expect A[none] to do?
Neal Becker
2015-12-31 16:34:21 UTC
Permalink
In my case, what it does is:

A.shape = (5760,)
A[none] -> (1, 5760)

In my case, use of none here is just a mistake. But why would you want this
to be accepted at all, and how should it be interpreted?
Neal Becker
2015-12-31 16:36:28 UTC
Permalink
Post by Neal Becker
A.shape = (5760,)
A[none] -> (1, 5760)
In my case, use of none here is just a mistake. But why would you want
this to be accepted at all, and how should it be interpreted?
Actually, in my particular case, if it just acted as a noop, returning the
original array, that would have been perfect. No idea if that's a good
result in general.
Sebastian Berg
2015-12-31 16:56:04 UTC
Permalink
Post by Neal Becker
Post by Neal Becker
A.shape = (5760,)
A[none] -> (1, 5760)
In my case, use of none here is just a mistake. But why would you want
this to be accepted at all, and how should it be interpreted?
Actually, in my particular case, if it just acted as a noop,
returning the
original array, that would have been perfect. No idea if that's a good
result in general.
We have `np.newaxis` with `np.newaxis is None` for the same thing.
`None` inserts a new axes, it is documented to do so in the indexing
documentation, so I will ask you to check it if you have more
questions.
If you want a noop, you should probably use `...` or `Ellipsis`.


- Sebastian
Post by Neal Becker
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
Joe Kington
2015-12-31 16:56:29 UTC
Permalink
Slicing with None adds a new dimension. It's a common paradigm, though
usually you'd use A[np.newaxis] or A[np.newaxis, ...] instead for
readibility. (np.newaxis is None, but it's a lot more readable)

There's a good argument to be made that slicing with a single None
shouldn't add a new axis, and only the more readable forms like A[None, :],
A[..., None], etc should.

However, that would rather seriously break backwards compatibility. There's
a fair amount of existing code that assumes "A[None]" prepends a new axis.
Post by Neal Becker
Post by Neal Becker
A.shape = (5760,)
A[none] -> (1, 5760)
In my case, use of none here is just a mistake. But why would you want
this to be accepted at all, and how should it be interpreted?
Actually, in my particular case, if it just acted as a noop, returning the
original array, that would have been perfect. No idea if that's a good
result in general.
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
Benjamin Root
2015-12-31 20:10:55 UTC
Permalink
TBH, I wouldn't have expected it to work, but now that I see it, it does
make some sense. I would have thought that it would error out as being
ambiguous (prepend? append?). I have always used ellipses to make it
explicit where the new axis should go. But, thinking in terms of how
regular indexing works, I guess it isn't all that ambiguous.

Ben Root
Post by Joe Kington
Slicing with None adds a new dimension. It's a common paradigm, though
usually you'd use A[np.newaxis] or A[np.newaxis, ...] instead for
readibility. (np.newaxis is None, but it's a lot more readable)
There's a good argument to be made that slicing with a single None
shouldn't add a new axis, and only the more readable forms like A[None, :],
A[..., None], etc should.
However, that would rather seriously break backwards compatibility.
There's a fair amount of existing code that assumes "A[None]" prepends a
new axis.
Post by Neal Becker
Post by Neal Becker
A.shape = (5760,)
A[none] -> (1, 5760)
In my case, use of none here is just a mistake. But why would you want
this to be accepted at all, and how should it be interpreted?
Actually, in my particular case, if it just acted as a noop, returning the
original array, that would have been perfect. No idea if that's a good
result in general.
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________
NumPy-Discussion mailing list
https://mail.scipy.org/mailman/listinfo/numpy-discussion
Nathaniel Smith
2016-01-01 00:20:34 UTC
Permalink
Post by Benjamin Root
TBH, I wouldn't have expected it to work, but now that I see it, it does
make some sense. I would have thought that it would error out as being
ambiguous (prepend? append?). I have always used ellipses to make it
explicit where the new axis should go. But, thinking in terms of how regular
indexing works, I guess it isn't all that ambiguous.
Yeah, I'm not really a fan of the rule that indexing with too-few axes
implicitly adds a "..." on the right

A[0] -> A[0, ...]

but given that we do have that rule, then A[None] -> A[None, ...] does
make sense.

-n
--
Nathaniel J. Smith -- http://vorpus.org
Continue reading on narkive:
Loading...