这些模块不会调度或类似的事情。 lambdaify 的工作方式是创建
lambda x: exp(x)
where exp
来自您选择的模块的名称空间。lambdify(x, exp(x), ['numpy', 'sympy'])
大致相当于
from sympy import *
from numpy import *
# Various name replacements for differences in numpy naming conventions, like
# asin = arcsin
return lambda x: exp(x)
如果您想提供一个自定义的调度函数,您可以使用 Saullo Castro 的示例。您还可以通过提供字典来将其与lambdaify一起使用,例如
import numpy as np
import sympy
def myexp(x):
if isinstance(x, np.ndarray):
return np.exp(x)
else:
return sympy.exp(x)
func = lambdify(x, exp(x), [{'exp': myexp}, 'numpy'])
这给出了
>>> func(np.array([1, 2]))
array([ 2.71828183, 7.3890561 ])
>>> func(sympy.Symbol('y'))
exp(y)