Verwechslung zwischen Numpy, Scipy, Matplotlib und Pylab

131

Numpy, Scipy, Matplotlib und Pylab sind gebräuchliche Begriffe unter denen, die Python für wissenschaftliche Berechnungen verwenden.

Ich habe gerade ein bisschen über Pylab gelernt und war verwirrt. Wann immer ich numpy importieren möchte, kann ich immer Folgendes tun:

import numpy as np

Ich denke nur daran, dass ich es einmal tue

from pylab import *

Der Numpy wird ebenfalls importiert (mit npAlias). Im Grunde macht der zweite mehr als der erste.

Es gibt einige Dinge, die ich fragen möchte:

  1. Ist es richtig, dass Pylab nur eine Hülle für Numpy, Scipy und Matplotlib ist?
  2. Da np der Numpy-Alias ​​in Pylab ist, was ist der Scipy- und Matplotlib-Alias ​​in Pylab? (Soweit ich weiß, ist plt ein Alias ​​von matplotlib.pyplot, aber ich kenne den Alias ​​für die matplotlib selbst nicht.)
goFrendiAsgard
quelle
4
Im Allgemeinen würde ich die Verwendung von Pylab (und * Importen) außerhalb der interaktiven Shell vermeiden. Pylab ist sowieso ein seltsamer Anhang zu Matplotlib.
seberg
@unutbu: danke für den Link, der die Dinge klar macht. Ich denke, es bedeutet auch, dass scipy ein völlig anderes Modul ist und daher nichts mit pylab zu tun hat
goFrendiAsgard
4
@goFrendiAsgard: Sie können genau überprüfen, was Pylab importiert, indem Sie nachsehen /usr/lib/pymodules/python2.7/matplotlib/pylab.py(der genaue Pfad ist für Windows oder OSX etwas anders; fragen Sie, ob Sie Hilfe benötigen, um ihn zu finden.)
Unutbu
Danke, das ist es, wonach ich suche. Ich denke, ich werde den "pythonischeren" Weg verwenden, da Pylab nur ein Wrapper für diejenigen ist, die an Matlab gewöhnt sind.
goFrendiAsgard

Antworten:

128
  1. Nein, pylabist Teil von matplotlib(in matplotlib.pylab) und versucht, Ihnen eine MatLab-ähnliche Umgebung zu bieten. matplotlibhat eine Reihe von Abhängigkeiten, unter numpydenen es unter dem gemeinsamen Alias ​​importiert np. scipyist keine Abhängigkeit von matplotlib.

  2. Wenn Sie ipython --pylabeinen automatischen Import ausführen, werden alle Symbole von matplotlib.pylabin den globalen Bereich verschoben. Wie Sie geschrieben haben, numpywird unter dem npAlias importiert . Symbole von matplotlibsind unter dem mplAlias verfügbar .

Benjamin Bannier
quelle
9
@ Benjamin Bannier Was ist das dann - wiki.scipy.org/PyLab ? Das verwirrt mich.
Shahensha
@shahensha, es hört sich so an, als gäbe es zwei PyLabs; per dem Link, den Sie gesendet haben: "... Unterschied zwischen der Vision für ein neues PyLab auf dieser Seite und dem vorhandenen Pylab-Paket, das Teil von matplotlib ist "
The Red Pea
14

Scipy und Numpy sind wissenschaftliche Projekte, deren Ziel es ist, Python effizientes und schnelles numerisches Computing zu ermöglichen.

Matplotlib ist der Name der Python-Plot-Bibliothek.

Pyplot ist eine interaktive API für Matplotlib, hauptsächlich zur Verwendung in Notebooks wie Jupyter. Sie verwenden es im Allgemeinen so : import matplotlib.pyplot as plt.

Pylab ist dasselbe wie Pyplot, jedoch mit zusätzlichen Funktionen (von seiner Verwendung wird derzeit abgeraten).

  • pylab = pyplot + numpy

Weitere Informationen finden Sie hier: Matplotlib, Pylab, Pyplot usw .: Was ist der Unterschied zwischen diesen und wann sie jeweils verwendet werden?

Felipe
quelle
2
Ein weiteres Beispiel, das direkt auf der Website von matplotlib veröffentlicht wurde: "Matplotlib, pyplot und pylab: Wie hängen sie zusammen? Ist Matplotlibdas gesamte Paket ; matplotlib.pyplotist ein Modul in matplotlib ; und pylabist ein Modul, das neben matplotlib installiert wird. "
The Red Pea
2

Da einige Leute (wie ich) immer noch verwirrt über die Verwendung von Pylab sind, da es Beispiele für die Verwendung von Pylab pylabim Internet gibt, ist hier ein Zitat aus den offiziellen FAQ zu matplotlib:

pylab ist ein Convenience-Modul, das matplotlib.pyplot (zum Plotten) und numpy (zum Rechnen und Arbeiten mit Arrays) in einem einzigen Namensraum massenweise importiert. Obwohl viele Beispiele Pylab verwenden, wird es nicht mehr empfohlen.

Also, TL; DR; Verwenden Sie kein Pylab, Punkt. Bei Bedarf separat verwenden pyplotund importieren numpy.

Hier ist der Link für weitere Informationen und andere nützliche Beispiele.

Jamescampbell
quelle
1
Kürzlich eröffnetes Pylab, schnell entsetzt über das, was ich gesehen habe. Wie wurde das jemals als normal akzeptiert?
Eric
Ja, wer weiß.
Jamescampbell