Confusão entre numpy, scipy, matplotlib e pylab

132

Numpy, scipy, matplotlib e pylab são termos comuns entre os que usam python para computação científica.

Eu apenas aprendi um pouco sobre o pylab e fiquei confuso. Sempre que eu quiser importar numpy, sempre posso:

import numpy as np

Eu apenas considero que uma vez que eu faço

from pylab import *

o numpy também será importado (com npalias). Então, basicamente, o segundo faz mais coisas em comparação com o primeiro.

Há algumas coisas que quero perguntar:

  1. É certo que o pylab é apenas um invólucro para numpy, scipy e matplotlib?
  2. Como np é o alias numpy no pylab, qual é o aliado de scipy e matplotlib no pylab? (até onde sei, plt é o alias do matplotlib.pyplot, mas não sei o alias do próprio matplotlib)
goFrendiAsgard
fonte
4
Em uma observação geral de estilo, evitaria o uso do pylab (e * importações) fora do shell interativo. O Pylab é um apêndice um tanto estranho para o matplotlib.
Seberg
@unutbu: obrigado pelo link, que deixa as coisas claras. Eu acho que isso também significa que scipy é um completamente diferentes módulos e, portanto, não relacionada a Pylab
goFrendiAsgard
4
@goFrendiAsgard: Você pode inspecionar exatamente o que Pylab importações olhando em /usr/lib/pymodules/python2.7/matplotlib/pylab.py(o caminho exato é um pouco diferente para Windows ou OSX; perguntar se precisar de ajuda para encontrá-lo.)
unutbu
Obrigado, é o que eu procuro. Eu acho que vou usar a maneira mais "pitônica", já que o pylab é apenas um invólucro para aqueles que estão acostumados com o matlab.
goFrendiAsgard
1
O FAQ mencionado possui um novo link.
precisa saber é o seguinte

Respostas:

129
  1. Não, pylabfaz parte de matplotlib(in matplotlib.pylab) e tenta fornecer um ambiente semelhante ao MatLab. matplotlibpossui várias dependências, entre elas numpyimportadas sob o alias comum np. scipynão é uma dependência de matplotlib.

  2. Se você executar ipython --pylabuma importação automática, todos os símbolos serão inseridos matplotlib.pylabno escopo global. Como você escreveu, numpyé importado sob o npalias. Os símbolos de matplotlibestão disponíveis sob o mplalias.

Benjamin Bannier
fonte
9
@Benjamin Bannier O que é isso então - wiki.scipy.org/PyLab ? Isso me confunde.
shahensha
@ Shahensha, parece que existem dois PyLabs; de acordo com o link que você enviou: "... diferença entre a visão para um novo PyLab expressa nesta página e o pacote pylab existente que faz parte do matplotlib "
The Red Pea
15

Scipy e numpy são projetos científicos cujo objetivo é trazer computação numérica eficiente e rápida para o python.

Matplotlib é o nome da biblioteca de plotagem python.

O Pyplot é uma API interativa para o matplotlib, principalmente para uso em notebooks como o jupyter. Você geralmente usá-lo como este: import matplotlib.pyplot as plt.

O Pylab é a mesma coisa que o pyplot, mas com recursos extras (seu uso atualmente é desencorajado).

  • pylab = pyplot + numpy

Veja mais informações aqui: Matplotlib, Pylab, Pyplot, etc: Qual é a diferença entre estes e quando usar cada um?

Felipe
fonte
2
Outro exemplo publicado diretamente no site do matplotlib "Matplotlib, pyplot e pylab: como eles estão relacionados? MatplotlibÉ o pacote inteiro ; matplotlib.pyploté um módulo no matplotlib ; e pylabé um módulo que é instalado ao lado do matplotlib. "
The Red Pea
3

Como algumas pessoas (como eu) ainda podem estar confusas sobre o uso do pylab, já que existem exemplos pylabna Internet, aqui está uma citação da FAQ oficial do matplotlib:

O pylab é um módulo de conveniência que importa em massa matplotlib.pyplot (para plotagem) e numpy (para matemática e trabalhando com matrizes) em um único espaço de nome. Embora muitos exemplos usem o pylab, ele não é mais recomendado.

Então, TL; DR; é não use pylab, ponto final. Use pyplote importe numpyseparadamente, conforme necessário.

Aqui está o link para mais leituras e outros exemplos úteis.

jamescampbell
fonte
1
O pylab, aberto recentemente, rapidamente voltou aterrorizado com o que vi. Como isso foi aceito como normal?
eric
Sim quem sabe
jamescampbell 15/04