[latexpage]

Polinomiais

O NumPy também possui polinomiais em diferentes bases:

Por exemplo, $\quicklatex{size=15} 3x^2+2x-1$ :

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

p = np.poly1d([3, 2, -1])
p(0)
p.roots
p.order

[/pastacode]

ainda:

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

x = np.linspace(0, 1, 20)
y = np.cos(x) + 0.3*np.random.rand(20)
p = np.poly1d(np.polyfit(x, y, 3))

t = np.linspace(0, 1, 200)
plt.plot(x, y, 'o', t, p(t), '-')

[/pastacode]

Veja http://docs.scipy.org/doc/numpy/reference/routines.polynomials.poly1d.html para mais.

Polinomiais em outras bases

NumPy também possui uma interface para polinômios sofisticada que suporta, por exemplo, a base de Chebyshev:

$\quicklatex{size=15} 3x^2+2x-1$

 

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

p = np.polynomial.Polynomial([-1, 2, 3]) # coeficientes em ordem diferente!
p(0)
p.roots()
p.degree()  # Em geral os polinômios sem sempre expõe a ordem

[/pastacode]

Exemplo utilizando polinomiais na base de Chebyshev, para polinômios no domínio [-1,1]:

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

x = np.linspace(-1, 1, 2000)
y = np.cos(x) + 0.3*np.random.rand(2000)
p = np.polynomial.Chebyshev.fit(x, y, 90)

t = np.linspace(-1, 1, 200)
plt.plot(x, y, 'r.')   
plt.plot(t, p(t), 'k-', lw=3)

[/pastacode]

Os polinômios de Chebyshev possuem algumas vantagens na interpolação.

Carregando arquivos de dados

Arquivos de texto

Exemplo, populacao.txt

[pastacode lang=”bash” message=”” highlight=”” provider=”manual”]

# ano	lebre	lince	cenoura
1900	30e3	4e3	48300
1901	47.2e3	6.1e3	48200
1902	70.2e3	9.8e3	41500
1903	77.4e3	35.2e3	38200

[/pastacode]

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

data = np.loadtxt('data/populations.txt')
data
np.savetxt('pop2.txt', data)
data2 = np.loadtxt('pop2.txt')

[/pastacode]

Observação: Se o seu arquivo de texto for muito complicado, você pode tentar:

  • np.genfromtxt
  • Usar as funções de I/O do Python e, por exemplo, expressões regulares para análise (Python é bem adequado para isso).

Imagens

Usando o Matplotlib:

Elefante 

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

import matplotlib.pyplot as plt

img = plt.imread('elefante.png')
img.shape, img.dtype
plt.imshow(img)     
plt.savefig('plot.png')
plt.imsave('cinza_elephant', img[:,:,0], cmap=plt.cm.gray)

[/pastacode]

Isso salvou o elefante em escalas de cinzas:

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

plt.imshow(plt.imread('cinza_elephant.png'))

[/pastacode]

Outras bibliotecas:

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

from scipy.misc import imsave

imsave('peq_elephant.png', img[::6,::6])
plt.imshow(plt.imread('peq_elephant.png'), interpolation='nearest')

[/pastacode]

Formato do NumPy

O NumPy possui seu próprio formato de arquivo, não portável mas eficiente:

[pastacode lang=”python” message=”” highlight=”” provider=”manual”]

dados = np.ones((3, 3))
np.save('pop.npy', dados)
dados3 = np.load('pop.npy')

[/pastacode]

Outros formatos

Entre outros. Se alguém usa certo formato de arquivo, provavelmente existe uma biblioteca python para ele.