Confusione tra intorpidimento, scipy, matplotlib e pylab


132

Numpy, scipy, matplotlib e pylab sono termini comuni tra coloro che usano python per il calcolo scientifico.

Ho solo imparato qualcosa su Pylab e mi sono confuso. Ogni volta che voglio importare numpy, posso sempre fare:

import numpy as np

Lo considero solo una volta

from pylab import *

anche il numpy verrà importato (con npalias). Quindi sostanzialmente il secondo fa più cose rispetto al primo.

Ci sono alcune cose che voglio chiedere:

  1. È giusto che pylab sia solo un wrapper per numpy, scipy e matplotlib?
  2. Dato che np è l'alias intorpidito in pylab, qual è l'alias scipy e matplotlib in pylab? (per quanto ne so, plt è alias di matplotlib.pyplot, ma non conosco l'alias per il matplotlib stesso)

4
Su una nota generalmente di stile, eviterei l'uso di pylab (e * importazioni) al di fuori della shell interattiva. Pylab è comunque un'appendice un po 'strana a matplotlib.
seberg,

@unutbu: grazie per il link, che chiarisce le cose. Penso che significhi anche che scipy è un modulo completamente diverso e quindi non correlato a pylab
goFrendiAsgard

4
@goFrendiAsgard: puoi esaminare esattamente quali importazioni di pylab guardano dentro /usr/lib/pymodules/python2.7/matplotlib/pylab.py(il percorso esatto è leggermente diverso per Windows o OSX; chiedi se hai bisogno di aiuto per trovarlo.)
unutbu

Grazie, è quello che cerco. Penso che userò il modo più "pythonic" poiché pylab è solo un wrapper per coloro che sono abituati a matlab.
goFrendiAsgard

Risposte:


129
  1. No, pylabfa parte di matplotlib(in matplotlib.pylab) e cerca di darti un ambiente simile a MatLab. matplotlibha una serie di dipendenze, tra le numpyquali importa sotto lo pseudonimo comune np. scipynon è una dipendenza di matplotlib.

  2. Se si esegue ipython --pylabun'importazione automatica, tutti i simboli verranno inseriti matplotlib.pylabnell'ambito globale. Come hai scritto, numpyviene importato sotto l' npalias. I simboli da matplotlibsono disponibili sotto l' mplalias.


9
@Benjamin Bannier Cos'è questo allora - wiki.scipy.org/PyLab ? Questo mi confonde.
Shahensha,

@shahensha, sembra che ci siano due PyLab; per il link che hai inviato: "... differenza tra la visione di un nuovo PyLab espressa in questa pagina e il pacchetto pylab esistente che fa parte di matplotlib "
The Red Pea,

15

Scipy e numpy sono progetti scientifici il cui scopo è quello di portare il calcolo numerico efficiente e veloce su Python.

Matplotlib è il nome della libreria di stampa python.

Pyplot è un'API interattiva per matplotlib, principalmente per l'uso su notebook come jupyter. Si utilizzano in genere in questo modo: import matplotlib.pyplot as plt.

Pylab è la stessa cosa di pyplot, ma con funzionalità extra (il suo utilizzo è attualmente sconsigliato).

  • pylab = pyplot + numpy

Vedi maggiori informazioni qui: Matplotlib, Pylab, Pyplot, ecc: Qual è la differenza tra questi e quando usarli?


2
Un altro esempio pubblicato direttamente sul sito di matplotlib "Matplotlib, pyplot e pylab: come sono correlati? MatplotlibÈ l' intero pacchetto ; matplotlib.pyplotè un modulo in matplotlib ; ed pylabè un modulo che viene installato insieme a matplotlib. "
The Red Pea,

3

Dato che alcune persone (come me) potrebbero essere ancora confuse sull'uso di pylab poiché alcuni esempi di utilizzo pylabsono disponibili su Internet, ecco una citazione dalle FAQ ufficiali di matplotlib:

pylab è un modulo di convenienza che importa in blocco matplotlib.pyplot (per la stampa) e numpy (per la matematica e lavora con le matrici) in un unico spazio di nomi. Sebbene molti esempi utilizzino pylab, non è più raccomandato.

Quindi, TL; DR; non usare pylab, punto. Utilizzare pyplote importare numpyseparatamente secondo necessità.

Ecco il link per ulteriori letture e altri esempi utili.


1
Pylab aperto di recente, rapidamente tornato terrorizzato da ciò che ho visto. Come è stato mai accettato come normale?
eric,

Sì, chi lo sa.
Jamescampbell,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.