[Numpy-discussion] x[None] changes x.shape
Vincent Nijs
v-nijs at kellogg.northwestern.edu
Sat Jan 6 13:19:27 CST 2007
Ah ... I did not make the link between newaxis and None.
While the proposed solution works I found an alternative that gave me
exactly what I was looking for:
def foo(x, sel=())
return x[sel]
I.e., passing an empty tuple returns the entire array without changing
x.shape or making a copy.
Vincent
On 1/5/07 7:00 PM, "Robert Kern" <robert.kern at gmail.com> wrote:
> Vincent Nijs wrote:
>> Say I use a function that expects a boolean array called sel to be passed as
>> an argument:
>>
>> def foo(x,sel = None):
>> return x[sel]
>>
>> If x is a 1-d array and sel is a (1-d) boolean array, x.shape will give (n,)
>> where n is len(x).
>>
>> However, if the default value None is used (i.e., when no boolean array is
>> passed) x.shape will give (1,n).
>>
>> Is that expected behavior?
>
> Yes. numpy.newaxis is just an alias for None, so x[None] is the same as
> x[numpy.newaxis].
>
>> If so is there an alternative default to I could use that would return the
>> entire x array and have x.shape be (n,)?
>
> def foo(x, sel=None):
> if sel is None:
> return sel
> else:
> return x[sel]
More information about the Numpy-discussion
mailing list