2013-07-08 11 views
5

Qual è il modo migliore per scrivere un'espressione simbolica in un file txt (in modo che possa usare l'espressione simbolica dopo aver letto il file txt)?Python - scrivi l'espressione simbolica (sympy) nel file txt

Esiste un equivalente sympy della funzione savetxt() di numpy, ad esempio?

ad esempio:

from sympy import Symbol 
a=Symbol('a') 
b=Symbol('b') 

y=a+3*b 

Come faccio a scrivere e leggere correttamente y?

risposta

3

è possibile utilizzare la libreria pickle per memorizzare in un file (come è possibile salvare la maggior parte degli oggetti Python):

import pickle 
with open("y.txt", "w") as outf: 
    pickle.dump(y, outf) 

Si sarebbe poi caricarlo con

with open("y.txt") as inf: 
    y = pickle.load(inf) 
+0

Grazie mille! – Baekel

+1

Si noti che 'pickle' soffoca su molte espressioni SymPy. 'dill' fa un lavoro migliore. – asmeurer

7

str(expr) in SymPy dovrebbe salva la maggior parte delle informazioni sulla tua espressione. Il vantaggio è che è leggibile dall'uomo. Il modo migliore per caricare da esso è utilizzare sympify(), al contrario di solo copia-incolla o eval, perché ad esempio, str(Rational(1, 2)) darà 1/2, che valuterà direttamente a 0.5.

C'è anche una funzione srepr() (versione di SymPy di ​​repr) che fornisce un output più dettagliato.

Una cosa da essere consapevoli è che né salva le informazioni relative ipotesi sui simboli al momento (Symbol('x', real=True)), quindi se avete bisogno che, si dovrebbe usare qualcosa come salamoia o aneto.