繁体   English   中英

如何通过 sympy 在 ipython notebook 中漂亮地打印?

[英]How to pretty print in ipython notebook via sympy?

我试过pprintprint ,前者只打印 Unicode 版本,后者不做漂亮的打印。

from sympy import symbols, Function
import sympy.functions as sym
from sympy import init_printing
init_printing(use_latex=True)
from sympy import pprint
from sympy import Symbol

x = Symbol('x')

# If a cell contains only the following, it will render perfectly.
(pi + x)**2

# However I would like to control what to print in a function, 
# so that multiple expressions can be printed from a single notebook cell.
pprint((pi + x)**2)

你需要使用显示:

from IPython.display import display

display(yourobject)

它将选择适当的表示(text/LaTex/png...),在最近的足够版本的 IPython (6.0+) 中默认导入显示,但我们仍然建议显式导入它。

问题在于您的 init_printing 语句。 在笔记本中,您不想运行 latex,而应该使用 mathjax,因此请尝试以下操作:

init_printing(use_latex='mathjax')

当我使用它时,即使我有一个 sympy 表达式作为单元格的最后一行,我也会在任何地方得到正常的漂亮打印。

这有效,

from IPython.display import display, Latex
from sympy import *

x = symbols('x')
display(x)

int_x = Integral(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(int_x), latex(int_x.doit()))
display(Latex(result))

derv_x = Derivative(cos(x)*exp(x), x)
result = "$${} = {}$$".format(latex(derv_x), latex(derv_x.doit()))
display(Latex(result))

自己试试吧。

我问过一个类似的问题(现在链接到这个问题)。 阅读答案并稍加修改后,我得出结论,可以得到 3 种类型的输出:

  1. “不漂亮”,纯文字……“低质量”。 这是用print(expression)

  2. 漂亮、纯正的文字……“中等质量”。 这就是一个人获得的

     import sympy as sym sympy.pprint(expression)

它仍然使用相同的字体并且仅使用字符来组合数学表达式。 但它可以,例如,增加幂的数字,通过布置水平线来提取分数等。

  1. 漂亮,带有图形、符号等......“高品质”。 这就是一个人获得的

     import IPython.display as disp disp.display(expression)

这与作为笔记本单元的输出获得的相同,但现在作为命令的结果。 然后,可以从单个笔记本单元获得多个这样的输出

值得注意的是:

  1. sym.init_printing(...影响sym.pprint的输出。

  2. sym.latex(expression)为表达式生成一个 LaTeX 字符串。 disp.Math(...从 LaTeX 产生表达式。这两个可能有用。因此, disp.display(disp.Math(sym.latex(expression)))将产生与disp.display(expression)相同的输出.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM