If, given the function f(x), your problem is simply to find a new function g(x), such that f(x)*g(x) is linear, then it is absolutely trivial.
g(x) = x / f(x)
Ok, as long as f(x) is never zero.
If, by linearization, you mean to find a transformation function g, such that g(f(x)) is linear, that becomes more difficult. As well, finding g(x), such that f(g(x)) is linear. Because in either case, you are effectively asking to find a functional inverse, and that will often be mathematically impossible. We can easily prove that, since we can make f(x) to be a polynomial model of degree 5 or higher. And we can prove a functional inverse does not exist for that general class of problems.
However, you did say the former.
" find the function that multiplied by that curve gives me a linear response."
If you want it to look like a straight line approximation to f(x), then use polyfit, to first find the linear function that approximates f(x), as p1*x+p0. Then your solution will be:
g(x) = (p1*x+p0) / f(x)
Again, the product will be as you desire.
If you want a specific solution, that perhaps deals with f(x) being zero, then you need to provide a little more information. Is f given as a general FUNCTION, or is f given as a list of numbers, thus samples from some unknown function?