Reputation: 43630
This had me scratching my head for a while. I was unintentionally slicing an array with None and getting something other than an error (I expected an error). Instead, it returns an array with an extra dimension.
>>> import numpy
>>> a = numpy.arange(4).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a[None]
array([[[0, 1],
[2, 3]]])
Is this behavior intentional or a side-effect? If intentional, is there some rationale for it?
Upvotes: 85
Views: 28354
Reputation: 69192
Using None is equivalent to using numpy.newaxis
, so yes, it's intentional. In fact, they're the same thing, but, of course, newaxis
spells it out better.
The newaxis object can be used in all slicing operations to create an axis of length one. newaxis is an alias for ‘None’, and ‘None’ can be used in place of this with the same result.
Upvotes: 85