我想使用sympy對數組輸入進行分級。這是我第一次嘗試:Sympy lambdify與數組結合錯誤
import sympy as sym
import numpy as np
# Load Data
data = np.loadtxt("D:\data.r2023.c87.dat", skiprows=1)
# Access to columns
vza = data [:,2]
sza = data [:,4]
# var_psi is the array input
psi = (1/(np.cos(sza))) + (1/(np.cos(vza)))
var_tau, var_omega, var_psi = sym.symbols('var_tau var_omega var_psi', real = True)
sBetaFunc = sym.exp(-var_tau * var_psi)
sBeta = sym.lambdify(var_psi, sBetaFunc, modules=[「numpy」, "sympy"])
如果我現在嘗試調用出現以下錯誤的功能:
>>> sBeta(psi)
>>> AttributeError: 'Mul' object has no attribute 'exp'
如果我嘗試這樣出現以下錯誤:
>>> sBeta(*psi)
>>> TypeError: <lambda>() takes exactly 1 argument (79 given)
我讀了很多關於這個問題。然而,似乎沒有什麼適合我的問題或我的情況。
我需要sympy函數,因爲我想使用sympy的diff函數來區分一些非常複雜的函數。
謝謝你在先進。
編輯:
現在,我想這一點:
import sympy as sym
import numpy as np
from sympy.abc import w, x, y, z
sBetaFunc = sym.exp(-var_tau * x)
sBeta = sym.lambdify(x, sBetaFunc, modules=["sympy"])
現在出現一個不同的錯誤:
>>> sBeta(psi)
>>> ValueError: sequence too large; cannot be greater than 32
謝謝你的幫助和全面的答覆! – petermailpan