Quel est le meilleur moyen de convertir un SymPy matrice à un tableau numpy/matrice
Je ne suis pas sûr si l'approche que j'ai utilisé dans sympy
pour convertir un MutableDenseMatrix
à un numpy.array
ou numpy.matrix
est une bonne pratique en vigueur.
J'ai une matrice symbolique comme:
g = sympy.Matrix( [[ x, 2*x, 3*x, 4*x, 5*x, 6*x, 7*x, 8*x, 9*x, 10*x]
[x**2, x**3, x**4, x**5, x**6, x**7, x**8, x**9, x**10, x**11]] )
et je suis la conversion à une numpy.array
faire:
g_func = lambda val: numpy.array( g.subs( {x:val} ).tolist(), dtype=float )
où je reçois un tableau pour une valeur donnée de x
.
Est-il une meilleure solution intégrée dans SymPy de le faire?
Merci!
- La plupart de répondre à cette question ici stackoverflow.com/questions/10678843/... - je sais, c'est pas exactement la même question, mais elle donne tout ce qui est nécessaire de savoir sur numpy/sympy l'interopérabilité.
- merci!!!! sentir frais de préparer une réponse, parce que je pense que c'est la meilleure approche pour mon cas aussi...
- Oui, l'utilisation
lambdify
(je suis trop paresseux pour écrire une réponse à l'heure actuelle).
Vous devez vous connecter pour publier un commentaire.
Cela ressemble le plus simple:
Si vous passez le astype méthode, numpy permettra de créer une matrice de type "objet", qui ne fonctionne pas avec les communes les opérations de matrice.
Je réponds ici en prenant les conseils de Krastanov et asmeurer. Ce petit extrait de code utilise lambdify de sympy:
Ce qui semble être la meilleure façon de parvenir à ce que la question est de demander.
Le natif
tolist
méthode rend le sympy matrice en quelque chose de nestedly indexénumpy.array
pouvez lancer quelque chose nestedly indexé dans les tableaux.astype(float64)
sera jeté sur les numéros de tableau par défaut dans le numpy type float, qui va travailler avec arbitraires numpy matrice de fonctions de manipulation.Comme une note complémentaire, il vaut la peine de mentionner que la coulée de numpy, vous perdez la capacité de faire de la matrice des opérations tout en gardant sympy les variables et les expressions long de la balade.
EDIT:
Le point de mon autre remarque, c'est que lors de la coulée de numpy.tableau, vous perdez la possibilité d'avoir une variable n'importe où dans votre matrice. Tous vos éléments de la matrice doivent être des nombres déjà avant de lancer ou de tout casser.
De la SymPy-0.7.6.1_mpmath_ matrice docs, le
tolist()
méthode existe:mpmath.matrices.matrices.tolist()
renvoie une liste dempmath.ctx_mp_python.mpf
de sorte que vous aurez toujours besoin de la lancer, mais de l'OMI, ce n'est pas ce que l'OP demande, car ils veulent une fonction qui produit des tableaux numpy, qui est ce que l'on a accepté la réponse ne.