首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ipython-notebook中获取渐变表达式的乳胶表?

如何在ipython-notebook中获取渐变表达式的乳胶表?
EN

Stack Overflow用户
提问于 2013-08-29 14:02:10
回答 1查看 2K关注 0票数 5

我正在使用渐近从几个表达式中收集术语,并希望在一个表中格式化结果(在ipython-notebook中),在最左侧的列中,术语位于最左列,每个后续列表示一个表达式。该列中的条目来自sympy.collect(syms, evaluate=False)返回的dict

到目前为止,我有:

代码语言:javascript
复制
from IPython.display import display, Latex
import pandas as pd
import sympy as sym
sym.init_printing()
x,y,z = sym.symbols('x,y,z')
da,db,dc = sym.symbols('{\Delta}a {\Delta}b {\Delta}c ' )

e_list = []
d_list = []
e_list.append(da*2*x + da*(y - 2) + db*3*z + dc*(x+y))
e_list.append(dc*z + dc*x + da*x + db*(z+2))
for e in e_list:
    display(e.expand().collect((x,y,z)))
    d_list.append(e.expand().collect((x,y,z),evaluate=False))

df = pd.DataFrame(d_list).T

数据帧按照我想要的方式显示,除了条目是原始latex格式。

我认为下面的方法是可行的:

代码语言:javascript
复制
Latex(df.to_latex())

但我得到的只是一个盒子围着的乳胶码。

编辑:这似乎是ipython和latex表的一个已知问题,请参阅此处:

http://grokbase.com/t/scipy.org/ipython-user/12acr5rrr1/may-be-old-topic-just-getting-started-with-ipython-notebook-trouble-with-tables

我有两种不同的变通方法。使用unicode:

代码语言:javascript
复制
sym.init_printing(use_latex=False)
...
da,db,dc = sym.symbols('∆a ∆b ∆c' )

或将表显示为渐变矩阵:

代码语言:javascript
复制
terms = [x,y,z]
d_list = [(e.expand().collect((terms),evaluate=False)) for e in e_list]
mterms = sym.zeros(M.shape[0],len(terms)+1)
key1 = d_list[0].keys()[0]
terms.insert(0,key1)
for i in range(mterms.shape[0]):
    for j in range(mterms.shape[1]):
        try:
            mterms[i,j] = d_list[i][terms[j]]
        except:
            mterms[i,j] = 0

mterms
EN

回答 1

Stack Overflow用户

发布于 2013-09-09 12:46:16

毫无疑问,部分问题是您从df.to_latex()中得到的latex实际上不是有效的latex。例如,如果您只是将该函数的输出粘贴到一个专用的latex文档中,它将无法编译。

特别是,表中的一些条目包含诸如\Delta之类的内容,但这些内容不在数学环境中(没有美元符号)。

所以这绝对是个问题。另一个可能的问题是使用\toprule等。这些是非标准的latex结构(尽管它们可以与正确的latex包一起使用),但我不知道这些rule是否被Latex函数识别。

尽管如此,我甚至不能让最简单的tabular环境正确显示。例如,即使我这样做了

代码语言:javascript
复制
Latex(r"""\begin{tabular}{l} 1 \\ 2 \end{tabular}""")

我得到了一个装箱的结果,就像你说的。(尽管该字符串的内容可以在专用的latex文档中正确编译。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18503351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档