您无法真正将此功能进行载体化,操作的开发变得过于复杂.
例如,用z[i-1]
的函数表示的z[i+1]
等于:
z[i-1]*(1+x[i])+y[i] + z[i]*(x[i+1]+x[i]*x[i+1]) + y[i]*x[i] + y[i+1]
每走一步,情况就会变得更糟
正如 comments 中建议的那样,如果速度是一个问题,您可以使用numba
:
from numba import jit
@jit(nopython=True)
def f(a, x, y):
out = [a]
for i in range(1, len(x)):
out.append(out[i-1] * (1 + x[i]) + y[i])
return out
out = pd.Series(f(213, x['RandomNumber'].to_numpy(), y['RandomNumber'].to_numpy()), index=x.index)
输出(使用np.random.seed(0)
行和5行):
0 213.000000
1 365.772922
2 587.139217
3 908.025165
4 1293.097825
dtype: float64
定时 ( 200 行 ) :
# python loop
59.8 ms ± 908 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
# numba
151 µs ± 968 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)