Найти - Пользователи
Полная версия: векторизовать матрицу
Начало » Python для новичков » векторизовать матрицу
1
dd67
Можно ли векторизовать символьные выражение, сожержащее 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
возникло такое решение (без 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]]



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB