[Numpy-discussion] x[None] changes x.shape

Robert Kern robert.kern at gmail.com
Fri Jan 5 19:00:27 CST 2007


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]

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco


More information about the Numpy-discussion mailing list