gpt4 book ai didi

python - 在 lambdify 的 sympy 表达式上使用 numba.autojit

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:19 27 4
gpt4 key购买 nike

我过去使用过 numpy 并且对它相当满意,但有时当我想要一点额外的速度时,我已经能够使用 numba.autojit 装饰器。简单的。现在的问题是我目前正在处理一系列 sympy 表达式和 numba(jit 或 autojit)不确定如何从 lambdify 中提取函数。看起来 sympy 没有维护特定的参数列表。

我想我可以看看 sympy.lamdify 的工作原理并制作我自己的包含 numba 的版本,但我想我应该先四处询问。

最佳答案

要回答您的第二个问题,lambdify 的工作方式是将表达式的字符串形式创建为 lambda,并在具有数值函数的命名空间中对其进行eval

例如,对于 lambdify(x, sin(x), 'numpy')sin(x) 被转换为 'sin(x) '(此处的字符串形式与常规字符串形式相同,但它们可能不同,例如,由于 SymPy 和 NumPy 之间的函数名称不同。执行此操作的函数是 sympy.printing.lambdarepr .lambdarepr。请注意,尽管您要使用的函数是 sympy.utilities.lambdify.lambdastr,它也会执行下一步。

然后将其添加到 lambda,得到 'lambda x: sin(x)'

那么,大致就是这样

g = {}
exec 'from numpy import *' in g # or exec('from numpy import *', g) in Python 3
l = eval('lambda x: sin(x)', g)

l 将是 lambdifies 函数。

换句话说,它在 sinnumpy.sin 的命名空间中计算 'lambda x: sin(x)'

据我所知,numba.jit 和 numba.autojit 只是翻译字节码,所以它们应该可以在 lambda 上正常工作。

关于python - 在 lambdify 的 sympy 表达式上使用 numba.autojit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22793601/

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