I do not use python, but if I understand correctly then by
$$
F(r)=\int_0^ry(x)dx
$$
you are thinking something like
$$
\mathbf{F}=\mathrm{integrate}(\mathbf{y},\mathbf{x})
$$
where $\mathbf{F}=[F_1,...,F_n]$ is a vector sampling the integral over a grid $\mathbf{x}$.
However you do not have samples of $x$ and $y$, but rather you have samples of $\hat{x}=\log(x)$ and $\hat{y}=\log(y)$.
Of course the simplest approach would be
$$
\mathbf{F}=\mathrm{integrate}(\exp(\mathbf{\hat{y}}),\exp(\mathbf{\hat{x}})) ,
$$
but this would be error-prone, because $y(x)$ is not smooth, even though $\hat{y}(\hat{x})$ is.
Now the trapezoidal rule essentially assumes your input $y(x)$ is piecewise linear. So the simple generalization would be for you to assume that $\hat{y}(\hat{x})$ is piecewise linear.
In this case, defining $\Delta F_k=F_{k+1}-F_k$, you have
$$
\Delta F_k=\int_{x_k}^{x_{k+1}}y(x)dx
=\int_{\hat{x}_k}^{\hat{x}_{k+1}}e^{\hat{y}(\hat{x})}e^\hat{x}d\hat{x}
=\int_{\hat{x}_k}^{\hat{x}_{k+1}}\tilde{y}(\hat{x})d\hat{x}
$$
Then, defining $t=(\hat{x}-\hat{x}_k)/\Delta \hat{x}_k$, you have
$$
\hat{y}_{k+t} \approx \hat{y}_k + t \Delta \hat{y}_k
$$
and $\tilde{y}(t) \approx a e^{bt}$, with $a=e^{\hat{y}_k+\hat{x}_k}$ and $b=\Delta \hat{y}_k+\Delta \hat{x}_k$.
So the integral becomes
$$
\Delta F_k \approx a \Delta \hat{x} \int_0^1e^{bt}dt
= a \Delta \hat{x} \frac{e^b-1}{b}
$$
In Matlab this would look something like
dlogx=diff(logx); dlogy=diff(logy); k=1:length(logx)-1;
b=dlogx+dlogy; a=exp(logx+logy);
dF=a(k).*dlogx.*(exp(b)-1)./b;
F=cumsum([0,dF]);
Hope this helps!
(Edit: My answer is essentially the same as the much more concise answer that Damascus Steel gave as I was typing. The only difference is I attempted to give a particular solution for the case where the "particular $y(x)$" is a piecewise-linear $\hat{y}(\hat{x})$ discretized over a discrete $\mathbf{\hat{x}}$ mesh, with $F(\hat{x}_1)=0$.)