将一个sympy表达式列表转换为一个lambdified表达式列表

时间:2016-03-07 21:15:26

标签: python sympy

n=input()

w=sym.symarray(' ', n) 

w[0]=sym.exp(-x**2)

for i in range(1,n):

    w[i]=sym.factor(sym.diff(w[i-1], x))

上面的行导致了一个符号性的症状列表,我可以访问和使用它,但我想把它变成一个数字函数数组,我已经尝试过lambdify但它没有用。 而

f=np.arange(0,n)

f[0]=sym.lambdify(x, w[0], modules='numpy')

工作正常,下面的循环没有:

f=np.arange(0,n)

for i in range(0,n):

    f[i]=sym.lambdify(x, w[i], modules='numpy') 

并返回以下错误:

Traceback (most recent call last):

  File "/Users/Yuri/newwaves.py", line 16, in <module>

    f[i]=sym.lambdify(x, w[i], np)

 TypeError: int() argument must be a string, a bytes-like object or a number, not 'function'

1 个答案:

答案 0 :(得分:1)

arange返回一个带有dtype = int的numpy数组。要存储lambdified函数,需要使用dtype = object。您可以使用np.empty(n, dtype=object)创建一个空数组。

或者,您可以使用Python list,这可以更简单地使用,因为当您的dtype为object时,您并没有真正获得numpy数组的任何优势。