Confusion entre numpy, scipy, matplotlib et pylab

132

Numpy, scipy, matplotlib et pylab sont des termes courants parmi ceux qui utilisent python pour le calcul scientifique.

J'apprends juste un peu plus sur pylab, et je suis confus. Chaque fois que je veux importer numpy, je peux toujours faire:

import numpy as np

Je considère juste qu'une fois que je le fais

from pylab import *

le numpy sera également importé (avec npalias). Donc, fondamentalement, le second fait plus de choses que le premier.

Il y a peu de choses que je veux demander:

  1. Est-il vrai que pylab n'est qu'un emballage pour numpy, scipy et matplotlib?
  2. Comme np est l'alias numpy dans pylab, quel est l'alias scipy et matplotlib dans pylab? (pour autant que je sache, plt est un alias de matplotlib.pyplot, mais je ne connais pas l'alias du matplotlib lui-même)
goFrendiAsgard
la source
4
Sur une note de style générale, j'éviterais l'utilisation de pylab (et * importations) en dehors du shell interactif. Pylab est un appendice un peu étrange à matplotlib de toute façon.
seberg
@unutbu: merci pour le lien, cela rend les choses claires. Je pense que cela signifie également que scipy est un module entièrement différent, et donc sans rapport avec pylab
goFrendiAsgard
4
@goFrendiAsgard: Vous pouvez inspecter exactement ce que pylab importe en le regardant /usr/lib/pymodules/python2.7/matplotlib/pylab.py(le chemin exact est un peu différent pour Windows ou OSX; demandez si vous avez besoin d'aide pour le trouver.)
unutbu
Merci, c'est ce que je recherche. Je pense que j'utiliserai la manière la plus "pythonique" puisque pylab n'est qu'un wrapper pour ceux qui sont habitués à matlab.
goFrendiAsgard

Réponses:

129
  1. Non, pylabfait partie de matplotlib(in matplotlib.pylab) et essaie de vous donner un environnement semblable à MatLab. matplotliba un certain nombre de dépendances, parmi numpylesquelles il importe sous l'alias commun np. scipyn'est pas une dépendance de matplotlib.

  2. Si vous exécutez ipython --pylabune importation automatique, tous les symboles seront placés matplotlib.pylabdans la portée globale. Comme vous l'avez écrit numpyest importé sous l' npalias. Les symboles de matplotlibsont disponibles sous l' mplalias.

Benjamin Bannier
la source
9
@Benjamin Bannier Qu'est-ce que c'est alors - wiki.scipy.org/PyLab ? Cela me trouble.
shahensha
@shahensha, on dirait qu'il y a deux PyLabs; par le lien que vous avez envoyé: "... différence entre la vision d'un nouveau PyLab exprimée sur cette page, et le paquet pylab existant qui fait partie de matplotlib "
The Red Pea
15

Scipy et numpy sont des projets scientifiques dont le but est d'apporter un calcul numérique efficace et rapide à python.

Matplotlib est le nom de la bibliothèque de traçage python.

Pyplot est une API interactive pour matplotlib, principalement pour une utilisation dans des ordinateurs portables comme jupyter. Vous utilisez généralement comme ceci: import matplotlib.pyplot as plt.

Pylab est la même chose que pyplot, mais avec des fonctionnalités supplémentaires (son utilisation est actuellement déconseillée).

  • pylab = pyplot + numpy

Voir plus d'informations ici: Matplotlib, Pylab, Pyplot, etc: Quelle est la différence entre ceux-ci et quand les utiliser?

Felipe
la source
2
Un autre exemple posté directement sur le site de matplotlib "Matplotlib, pyplot et pylab: comment sont-ils liés? MatplotlibEst le paquet entier ; matplotlib.pyplotest un module dans matplotlib ; et pylabest un module qui s'installe avec matplotlib. "
The Red Pea
3

Étant donné que certaines personnes (comme moi) peuvent encore être confuses au sujet de l'utilisation de pylab car des exemples d'utilisation pylabsont disponibles sur Internet, voici une citation de la FAQ officielle de matplotlib:

pylab est un module pratique qui importe en bloc matplotlib.pyplot (pour le traçage) et numpy (pour les mathématiques et l'utilisation de tableaux) dans un seul espace de nom. Bien que de nombreux exemples utilisent pylab, il n'est plus recommandé.

Donc, TL, DR; est de ne pas utiliser pylab, point final. Utilisez pyplotet importez numpyséparément si nécessaire.

Voici le lien pour plus de lecture et d'autres exemples utiles.

jamescampbell
la source
1
Pylab récemment ouvert, rapidement revenu de terreur à ce que j'ai vu. Comment cela a-t-il été accepté comme normal?
eric le
Oui, qui sait.
jamescampbell