Vectorization of functions with if tests; problem

Consider a function with an if test:
def somefunc(x):
    if x < 0:
        return 0
    else:
        return sin(x)

# or
def somefunc(x): return 0 if x < 0 else sin(x)
This function works with a scalar x but not an array
Problem: x<0 results in a boolean array, not a boolean value that can be used in the if test
>>> x = linspace(-1, 1, 3); print x
[-1.  0.  1.]
>>> y = x < 0
>>> y
array([ True, False, False], dtype=bool)
>>> bool(y)  # turn object into a scalar boolean value
...
ValueError: The truth value of an array with more than one 
element is ambiguous. Use a.any() or a.all()

previousnexttable of contents