np.vectorize
is just a convenience function. It doesn’t actually make code run any faster. If it isn’t convenient to use np.vectorize
, simply write your own function that works as you wish.
The purpose of np.vectorize
is to transform functions which are not numpy-aware (e.g. take floats as input and return floats as output) into functions that can operate on (and return) numpy arrays.
Your function f
is already numpy-aware — it uses a numpy array in its definition and returns a numpy array. So np.vectorize
is not a good fit for your use case.
The solution therefore is just to roll your own function f
that works the way you desire.