python - 编写一个快速(数组运算)函数,求解一列中的函数以获得下一个函数值
问题描述
我有一个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 循环是不好的做法。
我将不胜感激有关如何创建更快的功能的任何建议。提前致谢。
解决方案
让我们假设只有一种解决方案,然后您就可以开始玩了
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])
推荐阅读
- graphql - GraphQl - 如何将当前用户添加到突变对象
- reactjs - React Hook [useState]:更新状态并重新渲染视图
- typescript - 使用 NPM 脚本中的副本文件进行 Typescript 编译
- ios - 如何以编程方式配置 GoogleService TRACKING_ID?
- reactjs - 使用 Webpack、typescript、css 模块和 SASS 配置 React 组件库的最佳方法是什么
- python-3.x - 如何解决安装tensorflow时出现的问题:HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out
- geometry - 围绕网格中的一个点缩放:重绘网格并移动“原点”,使光标下的点保持固定
- python - Python:将分钟或秒添加到仅限时间的对象
- java - 我们怎么能在一定范围内,最大次数,一个int能被2整除
- mysql - 从表中删除数据而不创建临时表