保存/加载sympy lambdifed表达式

2024-09-28 22:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

想象一下以下三个步骤的过程:

  • 我使用sympy来构建一个大而有点复杂的表达式(这个过程需要花费很多时间)。在
  • 然后使用sympy.lambdify(同样慢)将该表达式转换为lambda函数。在
  • 然后对所述函数进行求值(快速)

理想情况下,步骤1和2只执行一次,而步骤3将被多次评估。不幸的是,步骤3的评估是随着时间的推移而分散的(以及不同的python会话!)在

我正在寻找一种将“lambdified”表达式保存到磁盘的方法,以便以后可以加载和使用它们。不幸的是pickle不支持lambda函数。我的lambda函数也使用numpy。在

当然,我可以手工创建一个匹配函数并使用它,但这似乎效率低下,而且容易出错。在


Tags: 方法lambda函数表达式过程时间情况步骤
2条回答

你可以用“莳萝”,如这里所述

{a1}

以及

How to use dill to serialize a class definition?

您必须导入dill并将变量'recursive'设置为值“True”。在

import dill
dill.settings['recurse'] = True

假设f是你的lambdified函数。您可以使用以下方法将其转储到磁盘。在

^{pr2}$

然后,您可以使用以下行加载函数。这也可以从另一个python脚本完成。在

f_new=dill.load(open("myfile", "rb"))

上述方法效果良好。 在python3.6的例子中,我需要显式地指出保存和加载的文件是二进制的。因此,将上述代码修改为:

dill.dump(f, open("myfile", "wb"))

阅读:

f_new=dill.load(open("myfile", "rb"))

相关问题 更多 >