Pomieszanie między numpy, scipy, matplotlib i pylab


133

Numpy, scipy, matplotlib i pylab to powszechne terminy wśród osób używających Pythona do obliczeń naukowych.

Po prostu dowiedziałem się trochę o Pylab i byłem zdezorientowany. Ilekroć chcę zaimportować numpy, zawsze mogę:

import numpy as np

Po prostu myślę, że kiedyś to zrobię

from pylab import *

numpy również zostanie zaimportowany (z npaliasem). Więc w zasadzie druga robi więcej rzeczy niż pierwsza.

Jest kilka rzeczy, o które chcę zapytać:

  1. Czy to prawda, że ​​pylab to tylko opakowanie dla numpy, scipy i matplotlib?
  2. Ponieważ np jest aliasem numpy w pylab, jaki jest alias scipy i matplotlib w pylab? (o ile wiem, plt to alias matplotlib.pyplot, ale nie znam aliasu samego matplotlib)

4
Ogólnie rzecz biorąc, unikałbym używania pylab (i * importów) poza powłoką interaktywną. Pylab i tak jest trochę dziwnym dodatkiem do matplotlib.
seberg

@unutbu: dzięki za link, który wyjaśnia sprawę. Myślę, że oznacza to również, że scipy to zupełnie inny moduł, a zatem niezwiązany z pylab
goFrendiAsgard

4
@goFrendiAsgard: Możesz dokładnie sprawdzić, co importuje Pylab, patrząc w /usr/lib/pymodules/python2.7/matplotlib/pylab.py(dokładna ścieżka jest trochę inna dla Windows lub OSX; zapytaj, czy potrzebujesz pomocy w znalezieniu tego.)
unutbu

Dziękuję, właśnie tego szukam. Myślę, że użyję bardziej „pythonowego” sposobu, ponieważ pylab jest tylko opakowaniem dla tych, którzy są przyzwyczajeni do Matlab.
goFrendiAsgard

Odpowiedzi:


130
  1. Nie, pylabjest częścią matplotlib(in matplotlib.pylab) i stara się zapewnić środowisko podobne do MatLab. matplotlibma wiele zależności, między innymi numpyktóre importuje pod wspólnym aliasem np. scipynie jest zależnością od matplotlib.

  2. Jeśli uruchomisz ipython --pylabautomatyczny import, wszystkie symbole z obszaru zostaną umieszczone matplotlib.pylabw zasięgu globalnym. Tak jak napisałeś, numpyzostanie zaimportowany pod npaliasem. Symbole od matplotlibsą dostępne pod mplaliasem.


9
@Benjamin Bannier Co to jest więc - wiki.scipy.org/PyLab ? To mnie wprawia w zakłopotanie.
shahensha

@shahensha, wygląda na to, że są dwa PyLabs; na przesłany przez Ciebie link: "... różnica między wizją nowego PyLab wyrażoną na tej stronie a istniejącym pakietem pylab, który jest częścią matplotlib "
The Red Pea,

15

Scipy i numpy to projekty naukowe, których celem jest wprowadzenie wydajnych i szybkich obliczeń numerycznych do Pythona.

Matplotlib to nazwa biblioteki kreślącej w języku Python.

Pyplot to interaktywny interfejs API dla matplotlib, głównie do użytku w notebookach, takich jak jupyter. Zazwyczaj go używać tak: import matplotlib.pyplot as plt.

Pylab to to samo co pyplot, ale z dodatkowymi funkcjami (obecnie odradza się jego używanie).

  • pylab = pyplot + numpy

Zobacz więcej informacji tutaj: Matplotlib, Pylab, Pyplot itp.: Jaka jest różnica między nimi i kiedy ich używać?


2
Innym przykładem wysłane bezpośrednio na miejscu matplotlib w „matplotlib, pyplot i pylab: w jaki sposób są one powiązane? MatplotlibJest cały pakiet , matplotlib.pyplotto moduł w matplotlib ; i pylabjest modułem, który zostanie zainstalowany obok matplotlib.
The Red PEA

3

Ponieważ niektórzy ludzie (tacy jak ja) mogą nadal być zdezorientowani co do używania pylab, ponieważ przykłady użycia pylabsą dostępne w Internecie, oto cytat z oficjalnego FAQ matplotlib:

pylab to wygodny moduł, który masowo importuje matplotlib.pyplot (do drukowania) i numpy (do matematyki i pracy z tablicami) w jednej przestrzeni nazw. Chociaż wiele przykładów używa pylab, nie jest to już zalecane.

A więc TL; DR; nie używaj pylab, kropka. Używaj pyploti importuj numpyosobno w razie potrzeby.

Oto link do dalszego czytania i innych przydatnych przykładów.


1
Niedawno otwarty pylab, szybko cofnął się przerażony tym, co zobaczyłem. Jak to się kiedykolwiek przyjęło jako normalne?
eric

Tak, kto wie.
jamescampbell
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.