2017-01-18 4 views
0

다른 매개 변수에서 알 수없는 매개 변수의 사전을 가지고 있는데, 다음과 같이 해당 구성 요소를 lmfit 모델에 추가하기 위해 사전을 반복했습니다.python lmfit에서 독립 변수를 포함하는 매개 변수 표현식을 설정하십시오.

: 프로그램을 실행할 때
from lmfit import Parameters 
fit_params = Parameters() 
for params_name in dict.keys(): 
    current_param = dict[param_name] 
    fit_params.add(param_name) 

내가 x는 내 독립 변수가

fit_params[param_name].set(expr = 'some_expression_in_function_of_x') 

각 매개 변수에 식을 추가하고 싶어,이 오류가 0

NameError 
Traceback (most recent call last): 
File "D:\Python\ThinPhy_File_By_File\test_code.py", line 52, in <module> 
<_ast.Module object at 0x00000145F661C4E0> 
       ^^^ 
name 'x' is not defined 
File "C:\Python36\lib\site-packages\lmfit\parameter.py", line 548, in __repr__ 
sval = repr(self._getval()) 
File "C:\Python36\lib\site-packages\lmfit\parameter.py", line 639, in _getval 
check_ast_errors(self._expr_eval) 
File "C:\Python36\lib\site-packages\lmfit\parameter.py", line 21, in check_ast_errors 
expr_eval.raise_exception(None) 
File "C:\Python36\lib\site-packages\lmfit\asteval.py", line 167, in raise_exception 
raise exc(self.error_msg) 
NameError: name 'x' is not defined in expr='<_ast.Module object at 0x00000145F661C4E0>' 

모델 독립 변수가 포함 된 표현식을 정의하는 방법이 있습니까? 또는 그것을 정의하는 방법.

답변

0

먼저 dict은 내장되어 있으며 변수 이름으로 사용하면 혼란을 일으킬 수 있습니다.

표현식에 x을 사용하려면

fit_params = Parameters() 
fit_params._asteval.symtable['x'] = x 

그러나처럼, 당신의 x 표현식을 평가하는 데 사용되는 심볼 테이블에 추가해야합니다 : 당신은 ndarrays와 함께이 일을 조심해야한다 . 그것은 작동 할 수 있지만, lmfit의 매개 변수는 일반적으로 수레를 의미합니다.