SymPy - Lambdify() 函式



lambdify 函式將 SymPy 表示式轉換為 Python 函式。如果要在多個值範圍內計算某個表示式的值,evalf() 函式的效率不高。lambdify 充當 lambda 函式,但會將 SymPy 名稱轉換為給定數字庫(通常為 NumPy)的名稱。預設情況下,lambdify 執行數學標準庫中的操作。

>>> expr=1/sin(x) 
>>> f=lambdify(x, expr) 
>>> f(3.14)

上述程式碼片段輸出以下內容 −

627.8831939138764

該表示式的變數可能超過一個。在這種情況下,lambdify() 函式的第一個引數是變數列表,後面是待計算的表示式。

>>> expr=a**2+b**2 
>>> f=lambdify([a,b],expr) 
>>> f(2,3)

上述程式碼片段輸出以下內容 −

13

但是,要將 numpy 庫用作數字後端,我們必須將其定義為 lambdify() 函式的引數。

>>> f=lambdify([a,b],expr, "numpy")

我們在上述函式中使用了兩個 numpy 陣列作為兩個引數 a 和 b。對於 numpy 陣列,執行時間相當快。

>>> import numpy 
>>> l1=numpy.arange(1,6) 
>>> l2=numpy.arange(6,11) 
>>> f(l1,l2)

上述程式碼片段輸出以下內容 −

array([ 37, 53, 73, 97, 125], dtype=int32)

廣告
© . All rights reserved.