1
Я использую библиотеку py-expression-eval для оценки выражения.python - py-expression-eval - Передача numpy ndarray
import numpy as np
from py_expression_eval import Parser
parser=Parser()
a = np.array([1,2,3])
parser.parse('x*5').evaluate({'x':a})
#Works and outputs
array([ 5., 10., 15.])
Однако:
parser.parse('sin(x)').evaluate({'x':a})
выдает ошибку:
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
parser.parse('sin(x)').evaluate({'x':a})
File "C:\Python27\lib\site-packages\py_expression_eval\__init__.py", line 133, in evaluate
nstack.append(f(n1))
TypeError: only length-1 arrays can be converted to Python scalars
Но если я прохожу значения массива по одному он работает:
parser.parse('sin(x)').evaluate({'x':a[0]})
0.8414709848078965
Thanks..Works с соз, загар, ASIN, экоса, Атан, бревенчатый, CEIL, пол, круглые, EXP функции также , Теперь только проблема - это «^», которая реализуется с использованием функции math.pow. Замена np.power не работает. – inxp
Добавлено решение для '^'. –
whoa .... Спасибо .... Я был уверен, что использовал ops2 ... Вчера он не работал ... Но теперь он работает ... :) – inxp