首先,目前SymPy不保证支持numpy数组,在这种情况下,这就是您想要的。检查此错误报告http://pre.google.com/p/sympy/issues/detail?id=537
其次,如果您想对 许多 值进行数值评估,SymPy并不是最佳选择(毕竟它是一个符号库)。使用numpy和scipy。
但是,要进行数字评估的一个有效理由是,要推导要评估的表达式很困难,因此您可以在SymPy中将其派生,然后在NumPy / SciPy / C /
Fortran中对其进行评估。要将表达式转换为numpy,只需使用
from sympy.utilities.lambdify import lambdifyfunc = lambdify(x, big_expression_containing_x,'numpy') # returns a numpy-ready functionnumpy_array_of_results = func(numpy_array_of_arguments)
检查lambdify的文档字符串以获取更多详细信息。请注意,lambdify仍然存在一些问题,可能需要重写。
而且,正如一个侧面说明,如果你想计算表达式 真的 很多次,你可以使用代码生成/
autowrap模块从以创建一个包,并从Python中调用FORTRAN语言或C语言sympy。
编辑:可以在Wiki https://github.com/sympy/sympy/wiki/Philosophy-of-Numerics-and-
Code-Generation-in-SymPy中找到SymPy中做数字方法的更新列表。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)