我在IPython笔记本中有一个多项式x
:
import numpy as np
x = np.polynomial.polynomial.Polynomial([1,2,3])
x
然后打印出x
,其输出为Polynomial([ 1., 2., 3.], [-1., 1.], [-1., 1.])
,实际上这很难看。我该如何使其正常打印,就像在LaTeX中呈现多项式或在纸上书写一样?
我在IPython笔记本中有一个多项式x
:
import numpy as np
x = np.polynomial.polynomial.Polynomial([1,2,3])
x
然后打印出x
,其输出为Polynomial([ 1., 2., 3.], [-1., 1.], [-1., 1.])
,实际上这很难看。我该如何使其正常打印,就像在LaTeX中呈现多项式或在纸上书写一样?
In [1]: import numpy as np
...: nppoly = np.polynomial.polynomial.Polynomial([1,2,3])
...: nppoly
Out[1]: Polynomial([ 1., 2., 3.], [-1., 1.], [-1., 1.])
In [2]: import sympy as sp
...: from sympy.abc import x
...: sp.init_printing()
...: sp.Poly(reversed(nppoly.coef),x).as_expr()
这将提供:
在IPython笔记本中不考虑LaTeX输出的情况下,我编写了这个小重载 numpy.polynomial.Polynomial 类,以便漂亮地显示多项式对象:
>>> P = MyPolynomial # The custom class, with a modified __str__ method
>>> X = P([0, 1]) # We define the monome X, to write polynomials simply
>>> Q1 = 1 + 2*X + 17*X**3 # Example of a polynomial
>>> # Was displayed poly([1.0, 2.0, 0.0, 17.0]) before... ugly!
>>> print(Q1) # Way nicer now!
1 + 2 * X + 17 * X**3
_repr_latex_
方法,如这里所解释的那样,对于IPython,您可以做同样的事情(只需将**
符号更改为^
并删除*
,您将获得LaTeX代码)。您可以始终使用 polynomial_obj.coef
检索多项式对象的系数,该方法返回一个numpy数组,然后您可以随意操作它以获得所需的输出。
import numpy as np
x = np.polynomial.polynomial.Polynomial([1,2,3])
def get_prettified_output(polynomial):
prettified_output = ""
coefficients = polynomial.coef
for i in xrange(len(coefficients)):
prettified_output+= str(coefficients[i])+"*x**"+str(i)+" + "
return prettified_output[:-2]
print get_prettified_output(x)
然而,你也可以使用类似于 prettified_output+= str(polynomial.coef[i])+"*x^"+str(i)+" + "
或者更方便的方法。