首页 > 解决方案 > 编写一个快速(数组运算)函数,求解一列中的函数以获得下一个函数值

问题描述

我有一个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 循环来执行此条目。这确实有效,但速度很慢,而且我听说对 DataFrame 使用 for 循环是不好的做法。

我将不胜感激有关如何创建更快的功能的任何建议。提前致谢。

标签: pythonpandasdataframevectorization

解决方案


让我们假设只有一种解决方案,然后您就可以开始玩了

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

推荐阅读