Python 编写一个快速(数组操作)函数,在一列中求解一个函数以获得下一个函数值

Python 编写一个快速(数组操作)函数,在一列中求解一个函数以获得下一个函数值,python,pandas,dataframe,vectorization,Python,Pandas,Dataframe,Vectorization,我有一个数据框,我想通过数值求解一个方程来定义每个b列条目,该方程使用a列中相应的元素。例如,第一个条目,让$a[0]$和$b[0]$成为列$a$和列$b$的第一个条目$给出了一个[0]$和一个函数$f(x)=e^x-a[0]*x^2$。我想通过求解$f$的零来定义$b[0]$。相同的函数$f$用于定义$b[1]、b[2]$等 目前,我正在使用scipy的fsolve,通过b列条目上的for循环来实现这个条目。这确实有效,但速度很慢,而且我听说用于数据帧循环是一种不好的做法 如果您能提供有关如何

我有一个数据框,我想通过数值求解一个方程来定义每个b列条目,该方程使用a列中相应的元素。例如,第一个条目,让$a[0]$和$b[0]$成为列$a$和列$b$的第一个条目$给出了一个[0]$和一个函数$f(x)=e^x-a[0]*x^2$。我想通过求解$f$的零来定义$b[0]$。相同的函数$f$用于定义$b[1]、b[2]$等

目前,我正在使用scipy的fsolve,通过b列条目上的for循环来实现这个条目。这确实有效,但速度很慢,而且我听说用于数据帧循环是一种不好的做法


如果您能提供有关如何创建更快的函数的建议,我将不胜感激。提前感谢。

让我们假设只有一个解决方案,您可以从中开始游戏

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])

这可能有0、1或2个解决方案。在0或2解决方案案例中,您希望输出什么?你介意提出一个观点吗?很好。在我的设置中有一个独特的解决方案,但函数很难写下来。我们可以假设这个问题的解是存在的,并且是唯一的。