Python과 Sympy를 사용하고 있습니다.Python에서 Sympy 부울 표현식을 평가하십시오.
x,y,z = Symbols('x,y,z')
doc = {x : False, y : True, z: True}
rule = Or(x, And(y,z))
내가 rule.eval(doc)
에 True
를 반환합니다 Sympy에서 함수를 찾고 있어요 :
나는 다음 있나요?
편집 : 현재 rule.subs
과 rule.xreplace
모두 통화 당 약 0.0003 초로 느리게 수행됩니다. 이것은 비실용적이다. 이 IPython 준 후
X = tuple(doc.iterkeys())
f = lambdify(X, rule)
:
왜'rule.subs (doc)'를 할 수 없는지 궁금합니다. –
안녕하세요, 당신 말이 맞아요, 나는 그것을 언급하지 않았습니다. 이것은 내가 사용했던'rule.subs'와'rule.xreplace' 둘 다 예상대로 작동하지만 테리 블 (teribble) 성능을 가지고 있습니다. 내 코드를 프로파일 링하여 각 실행에 약 0.0003 초가 걸리는 것을 보았습니다. 나는이 기능들을 많이 사용한다. 더 효율적인 방법을 찾고 있습니다 –
그리고 sympy를 사용해야합니까? 그렇지 않다면 다음과 같이 할 수 있습니다 :'import operator as op; 규칙 = 람다 x, y, z : op.or_ (x, op.and_ (y, z)); 규칙 (거짓, 참, 참)'. 그것이 더 빠르지 만 사전을 제공하지는 않습니다. –