2016-03-07 86 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數組的任何優點。