2015-02-21 2 views
3

я имею в IPython ноутбук некоторый многочлен x:Довольно печать многочлены IPython ноутбук

import numpy as np 
x = np.polynomial.polynomial.Polynomial([1,2,3]) 
x 

Затем x печатается Polynomial([ 1., 2., 3.], [-1., 1.], [-1., 1.]), который должен быть честным некрасиво. Как я могу иметь обычную печать, например, я предоставляю многочлен в LaTeX или записываю его на бумаге?

ответ

0

Вы всегда можете получить коэффициенты полиномиального объекта, используя 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)+" + " или что-то более удобное.

+0

Не совсем то, что я ищу. Дополнительная ссылка, когда вы пишете $ x^2 $ в LaTeX i, превращается в приятный текст. – lpp

+0

Я сказал, что вы можете модулировать вывод так, как хотите, но эта вещь может дать вам начало – ZdaR

1

Вы можете использовать класс класса sympy, чтобы визуализировать ваши многочлены с хорошим латексом. Единственная проблема здесь в том, что numpy перечисляет коэффициенты в порядке возрастания, тогда как sympy делает обратное.

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() 

, который дает:
enter image description here

0

без прицеливания на выходе LaTeX в записной книжке IPython, я написал this small overload о 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_ метод, как описано here, для IPython, вы можете сделать то же самое (просто измените символы ** на ^ и удалите *, вы получите код LaTeX).