나는이 코드 조각이 : 내게 줄이 개 NumPy와 배열 lamdify 사용하여 추가 - 통과 식을 함수 인수로
import numpy as np
import sympy
from sympy import symbols
from sympy.utilities.autowrap import ufuncify
from sympy.utilities.lambdify import lambdify
def test(expr,a,b):
a_var, b_var = symbols("a b")
#f = ufuncify((a_var, b_var), expr, backend='numpy')
f = lambdify((a_var, b_var), expr, 'numpy')
return f(a_var, b_var)
a = np.array([2,3])
b = np.array([1,2])
expr = a + b
print(test(expr, a, b))
을 :
../anaconda3/envs/python3/lib/python3.6/site-packages/sympy/core/sympify.py:282: VisibleDeprecationWarning: using a non-integer number instead of an integer will result in an error in the future
rational=rational) for x in a])
File "<string>", line 1
lambda _Dummy_52,_Dummy_53: ([3 5])
SyntaxError: invalid syntax
나는 ufuncify 사용하는 경우 :
...
TypeError: unhashable type: 'numpy.ndarray'
During handling of the above exception, another exception occurred:
...
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
================
data_a = np.array([2,3])
data_b = np.array([1,2])
expr = "data_a + data_b"
def test(expr,data_a, data_b):
a, b = symbols("data_a data_b")
expr = sympify(expr)
f = lambdify((a, b), expr, 'numpy')
return f(data_a, data_b)
내가 복용하고 있습니다 :
[3 5]
을하지만이 같은 표현을 사용하지 않도록 할 수있는 방법 내가 찾은한 가지 해결책은 문자열과 같은 expr
를 사용하고 함수 내에서 sympify
을 사용하는 것입니다 끈?
표현식과 변수를 함수의 인수로 전달하는 방법에 대한 예제를 제공해 주시겠습니까? 제 예제가 있습니까? 왜냐하면 어떤 식 으로든 시도하면 오류가 발생합니다. 표현식을 문자열로만 사용하는 것은 상태로 작동합니다. 내 게시물에. 감사합니다 – George
귀하의 예제에서, 당신은 첫 번째와 b 기호를 만들고 다음 expr.In 내 예제를 사용하여, 나는 expr (표현식) 및 데이터 (numpy 배열) 인수로 전달하고 싶습니다. 그리고 난 모든 함수에'a_var, b_var = symbols ("ab")'가 있어야합니다.나는 그것이 분명하기를 바란다. – George
@George 내 업데이트 된 답변을 참조하십시오. – asmeurer