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" <[EMAIL PROTECTED]> 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] _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion