设想以下三步过程:
- 我使用 sympy 构建了一个大而复杂的表达式(这个过程花费了大量时间)。
- 然后使用
sympy.lambdify
(也很慢)将该表达式转换为 lambda 函数。 - 然后(快速)评估所述功能
理想情况下,步骤 1 和 2 只执行一次,而步骤 3 将被评估多次。不幸的是,第 3 步的评估随着时间的推移而分散(以及不同的 Python session !)
我正在寻找一种将“lambdified”表达式保存到磁盘的方法,以便我可以在以后加载和使用它们。不幸的是 pickle 不支持 lambda 函数。我的 lambda 函数也使用 numpy。
我当然可以手动创建一个匹配函数并使用它,但这似乎效率低下且容易出错。
最佳答案
您可以使用“dill”,如此处所述
How to serialize sympy lambdified function?
和
How to use dill to serialize a class definition?
您必须导入 dill 并将变量“recursive”设置为值“True”。
import dill
dill.settings['recurse'] = True
假设 f 是您的 lambdified 函数。您可以使用以下命令将其转储到磁盘。
dill.dump(f, open("myfile", "wb"))
之后您可以使用以下行加载函数。这也可以通过另一个 python 脚本完成。
f_new=dill.load(open("myfile", "rb"))
关于python - 保存/加载 sympy lambdifed 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079923/