将符号表达式写入txt文件的最佳方法是什么(以便我可以在读取txt文件后使用符号表达式)?
是否有 sympy 相当于 numpy 的 savetxt() 函数?
例如:
from sympy import Symbol
a=Symbol('a')
b=Symbol('b')
y=a+3*b
如何正确读写 y?
str(expr)
应该保存有关表达式的大部分信息。优点是它是人类可读的。从中加载的最佳方法是使用 sympify()
,而不是仅仅复制粘贴或 eval
,因为例如,str(Rational(1, 2))
将给出 1/2
,它将直接计算为 0.5
。
还有一个函数
srepr()
(SymPy 的 repr
版本)可以提供更详细的输出。
需要注意的一件事是,两者都不会保存当前有关符号假设的信息(
Symbol('x', real=True)
),因此如果您需要的话,您应该使用 pickle 或 dill 之类的东西。
您可以使用 pickle 库将其存储到文件中(因为您可以保存大多数 Python 对象):
import pickle
with open("y.txt", "w") as outf:
pickle.dump(y, outf)
您稍后将加载它
with open("y.txt") as inf:
y = pickle.load(inf)
使用
pickle
,您可能会遇到类似的错误
TypeError: write() argument must be str, not bytes
我推荐基本的Python 3打印方法:
y=a+3*b # this is my linear form
f = open('out.txt', 'w')
print("equation = ", y, file=f)
f.close()
我成功使用了它(也将 SymPy 输出提供给其他程序)
在一些更困难的情况下,您可能需要“wb”,用于以二进制模式写入