簡體   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