Ответ 1
Per FAQ:
Pyplot предоставляет интерфейс state-machine для основного построения библиотека в matplotlib. Это означает, что цифры и оси неявно и автоматически создается для достижения желаемого участка....
Pylab объединяет функциональность pyplot (для построения) с numpy функциональность (для математики и для работы с массивами) в единое пространство имен, что делает пространство имен (или среду) еще более MATLAB типа. Например, можно назвать функции sin и cos только как вы могли бы в MATLAB, а также иметь все возможности pyplot.
Интерфейс pyplot обычно предпочтительнее для неинтерактивных (т.е. сценариев). Интерфейс pylab удобен для интерактивные вычисления и построение графика, поскольку это сводит к минимуму типизацию. (мой акцент.)
Обратите внимание, что
from pylab import *
также выполняет
from numpy import *
Это перезаписывает многие встроенные функции Python, такие как:
In [5]: import __builtin__
In [6]: import numpy as np
In [5]: {name for name in set(dir(np)).intersection(dir(__builtin__)) if not name.startswith('__') and getattr(__builtin__, name) != getattr(np, name)}
Out[5]: {'abs', 'all', 'any', 'max', 'min', 'round', 'sum'}
Поэтому мне не нравится from pylab import *
(или действительно from module import *
для любого модуля), потому что он приводит к тому, что известные любимые имена Python ведут себя неожиданным образом (если вы не всегда помните, что from numpy import *
имеет загрязнено глобальное пространство имен.)
Например,
In [32]: np.all([np.arange(3), np.arange(3)])
Out[32]: False
а
In [33]: all([np.arange(3), np.arange(3)])
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()