Confusion between numpy, scipy, matplotlib and pylab
Numpy, scipy, matplotlib, and pylab are common terms among they who use python for scientific computation.
I just learn a bit about pylab, and I got confused. Whenever I want to import numpy, I can always do:
import numpy as np
I just consider, that once I do
from pylab import *
the numpy will be imported as well (with np
alias). So basically the second one does more things compared to the first one.
There are few things I want to ask:
- Is it right that pylab is just a wrapper for numpy, scipy and matplotlib?
- As np is the numpy alias in pylab, what is the scipy and matplotlib alias in pylab? (as far as I know, plt is alias of matplotlib.pyplot, but I don't know the alias for the matplotlib itself)
Solution 1:
No,
pylab
is part ofmatplotlib
(inmatplotlib.pylab
) and tries to give you a MatLab like environment.matplotlib
has a number of dependencies, among themnumpy
which it imports under the common aliasnp
.scipy
is not a dependency ofmatplotlib
.If you run
ipython --pylab
an automatic import will put all symbols frommatplotlib.pylab
into global scope. Like you wrotenumpy
gets imported under thenp
alias. Symbols frommatplotlib
are available under thempl
alias.
Solution 2:
Scipy and numpy are scientific projects whose aim is to bring efficient and fast numeric computing to python.
Matplotlib is the name of the python plotting library.
Pyplot is an interactive api for matplotlib, mostly for use in notebooks like jupyter. You generally use it like this: import matplotlib.pyplot as plt
.
Pylab is the same thing as pyplot, but with extra features (its use is currently discouraged).
- pylab = pyplot + numpy
See more information here: Matplotlib, Pylab, Pyplot, etc: What's the difference between these and when to use each?
Solution 3:
Since some people (like me) may still be confused about usage of pylab since examples using pylab
are out there on the internet, here is a quote from the official matplotlib FAQ:
pylab is a convenience module that bulk imports matplotlib.pyplot (for plotting) and numpy (for mathematics and working with arrays) in a single name space. Although many examples use pylab, it is no longer recommended.
So, TL;DR; is do not use pylab, period. Use pyplot
and import numpy
separately as needed.
Here is the link for further reading and other useful examples.