编写一个快速(数组运算)函数,该函数在一个列中求解一个函数以获取下一个函数值

时间:2019-02-21 22:33:36

标签: python pandas dataframe vectorization

我有一个DataFrame,其中我想通过数值求解使用来自a列的相应元素的方程式来定义每个b列条目。例如,第一个条目,使$ a [0] $和$ b [0] $为列$ a $和列$ b $的第一个条目。给出$ a [0] $和函数$ f(x)= e ^ x-a [0] * x ^ 2 $。我想通过求解$ f $的零来定义$ b [0] $。相同的函数$ f $用于定义$ b [1],b [2] $,依此类推。

当前,我正在通过使用scipy的fsolve通过在b列的条目上进行for循环来做到这一点。确实可以,但是速度很慢,而且我听说过为DataFrames循环使用是一种不好的做法。

对于有关如何创建更快功能的任何建议,我将不胜感激。预先感谢。

1 个答案:

答案 0 :(得分:0)

让我们假设只有一个解决方案,那么您可以从这里开始玩

import pandas as pd
import numpy as np
from scipy.optimize import root

def f(x,a):
    return np.exp(x) - a*x**2

n = 100
df = pd.DataFrame({"a":np.arange(1, n+1)})
df["sol"] = df["a"].apply(lambda a: root(f,x0=0, args=a).x[0])