gpt4 book ai didi

python - lambdify 到 py 函数 : How to maintain the order of symbols constant

转载 作者:太空宇宙 更新时间:2023-11-04 05:05:46 24 4
gpt4 key购买 nike

我有一些符号表达式存储在一个文本文件中(因为它们太大)以便稍后阅读它们以找到它们的数值估计。因此,在我阅读了这些表达式(例如 foo_sym)之后,我将这些表达式转换为 python 函数,如下所示:

import sympy as sym
foo_fn = sym.lambdify(tuple(foo_sym.free_symbols), foo_sym)

表达式中的一些符号变量是数组,因此我将函数的矢量化版本设置为:

import numpy as np
foo_fn_vec = np.vectorize(foo_fn)

现在,我发现向量化函数的数值估计如下:

foo_num = foo_fn_vec(var_1, var_2, var_3, ...., var_12)

在上面的代码中,var_1, var_2, var_3, ...., var_12 中符号值的顺序和我通过tuple(foo_sym.free_symbols)得到的符号顺序是一致的)。但是,每次我重新启动 python 并运行上面的代码时,我都会得到一个 ValueError: math domain error 因为符号变量的顺序由 tuple(foo_sym.free_symbols) 给出似乎已经改变,但 foo_fn_vec(var_1, var_2, var_3, ...., var_12) 中值的顺序没有改变。

是否有一种方法可以在两个步骤中保持符号顺序不变,即在转换为 sym.lambdify((var_1, var_2, var_3, ...., var_12), foo_sym) 并找到函数的数值为 foo_num = foo_fn_vec(var_1, var_2, var_3, ...., var_12)?

最佳答案

如果您使用 sym=tuple(ordered(foo_sym.free_symbols)),检索到的符号将始终以相同的顺序排列。然后,您可能希望将它们用作 foo_fn_vec(*sym),然后是 sym.lambdify(sym, foo_sym)

关于python - lambdify 到 py 函数 : How to maintain the order of symbols constant,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44551048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com