There isn't a way to do this that doesn't require an unnecessary multiplication for the common case? I guess that would be using np.result_type, which is Numpy 1.6+.