我通常使用下面的包来创建我的情节:matplotlib.pylab。但是,也有一个名为matplotlib.pyplot的包。
在使用它们时,我还没有发现两者之间的任何区别。因此,我的问题如下:
matplotlib.pylab包和matplotlib.pyplot包之间有什么区别。在哪种情况下,你会建议一个而另一个呢?
发布于 2014-05-04 00:02:04
每the FAQ
Pyplot为matplotlib中的底层绘图库提供状态机接口。这意味着图形和轴是隐含和自动创建的,以实现所需的地块. Pylab将pyplot功能(用于绘图)与numpy功能(用于数学和处理数组)结合在一个名称空间中,使该命名空间(或环境)更像MATLAB。例如,我们可以像在MATLAB中一样调用sin和cos函数,也可以调用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()https://stackoverflow.com/questions/23451028
复制相似问题