python - 保存/加载 sympy lambdifed 表达式

标签 python lambda sympy

设想以下三步过程:

  • 我使用 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/

相关文章:

c++ - 使用 std::transform 调用对象的函数

python - 如何在 SymPy 中显示变量的值及其名称

python - tensorflow:如何将我的Python代码作为服务放在谷歌云上

python - 我如何使用 python 从键盘发送命令。我正在尝试自动化 mac 应用程序 (GUI)

python - 在 Python 中拆分字符串的最有效方法

python - 根据使用 Pandas 保留其他列值的列对 DataFrame 中的日期进行排序

c# - 在 C# 中的数据模型上运行 lambda 时不支持的异常

Java流: sorting by ZoneDateTime field

python - 使用 Sympy 绘制 3D 曲线

python - 类型错误 : return arrays must be of ArrayType using lambdify of sympy in python