Форум сайта python.su
1
Можно ли векторизовать символьные выражение, сожержащее sympy.Matrix?
>>> dx=x**2+y**2 >>> dy=2*x*y >>> d=sympy.Matrix([dx,dy]) >>> D=sympy.lambdify((x,y),d,modules='numpy') >>> D(1,2) matrix([[5], [4]]) >>> t=numpy.array([1,2,3]) >>> u=numpy.array([4,5,6]) >>> D(t,u) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <lambda> File "/usr/lib/pymodules/python2.7/numpy/matrixlib/defmatrix.py", line 261, in __new__ raise ValueError, "matrix must be 2-dimensional" ValueError: matrix must be 2-dimensional
Отредактировано dd67 (Июнь 20, 2012 19:22:36)
Офлайн
1
возникло такое решение (без sympy.Matrix, возвращать numpy матрицу):
$ cat test.py #!/usr/bin/python import sympy, numpy x,y=sympy.symbols('x y') dx=x**2+y**2 dy=2*x*y def D(t,u): return numpy.array([sympy.lambdify((x,y),dx,modules='numpy')(t,u),sympy.lambdify((x,y),dy,modules='numpy')(t,u)]) print D(1,2) t=numpy.array([1,2,3]) u=numpy.array([5,6,7]) print D(t,u) $ ./test.py [5 4] [[26 40 58] [10 24 42]]
Офлайн