No, my guess would have been that would work, but then apparently it doesn't. It does give you a route to arrive at a solution, though. The problem here isn't sage-specific: it's just that normally, python functions don't broadcast over numpy arrays. There should be plenty of examples around the web that show how to get broadcast behaviour in place. It looked to me like numpy.vectorize would do the trick, but there should be other solutions, or perhaps you should use the vectorized function differently.
By realizing that the question is not sage-specific, I think it will be easy to find a ready-made solution elsewhere or find another forum with more specific expertise. Or perhaps someone else here knows more about numpy.