2016-03-07 85 views
2
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)) 

在象征sympy功能,我可以访问和使用的列表上述结果的行的列表,但我想变成的数字函数阵列,我试过通过lambdify但它没有工作。 而车削sympy表达式列表到lambdified表达式

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

arange返回与D型= INT一个numpy的阵列。要存储lambdified功能,您需要使用dtype = object。您可以使用np.empty(n, dtype=object)创建一个空数组。

或者,您可以使用Python list,它的工作简单得多,因为当您的dtype为object时,您不会真正获得numpy数组的任何优点。