Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Sympys NumPyPrinter?

I am trying to print my Sympy-expression as a string ready to be used with Numpy. I just cannot figure out how to do it.

I found that there is sp.printing.pycode: https://docs.sympy.org/latest/_modules/sympy/printing/pycode.html

The web page states that "This module contains python code printers for plain python as well as NumPy & SciPy enabled code.", but I just cannot figure out how to get it to output the expression numpy format.

sp.printing.pycode(expr)
'math.cos((1/2)*alpha)*math.cos((1/2)*beta)'

That web page also contain class NumPyPrinter(PythonCodePrinter) but I do not know how to use it. def pycode(expr, **settings) just seems to use return PythonCodePrinter(settings).doprint(expr) as a default all the time.

like image 757
saikon Avatar asked Dec 28 '25 11:12

saikon


1 Answers

The definition of pycode is almost trivial:

def pycode(expr, **settings):
    # docstring skipped
    return PythonCodePrinter(settings).doprint(expr)

It should be straight forward to run NumPyPrinter().doprint(expr) instead. The problem is that sympy.printing re-exports the pycode function which shadows the module with the same name. However, we can still import the class directly and use it:

import sympy as sy
from sympy.printing.pycode import NumPyPrinter

x = sy.Symbol('x')
y = x * sy.cos(x * sy.pi)

code = NumPyPrinter().doprint(y)

print(code)
# x*numpy.cos(numpy.pi*x)
like image 123
MB-F Avatar answered Dec 31 '25 02:12

MB-F



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!