首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >matplotlib.pyplot对matplotlib.pylab

matplotlib.pyplot对matplotlib.pylab
EN

Stack Overflow用户
提问于 2014-05-03 23:49:49
回答 1查看 6.3K关注 0票数 16

我通常使用下面的包来创建我的情节:matplotlib.pylab。但是,也有一个名为matplotlib.pyplot的包。

在使用它们时,我还没有发现两者之间的任何区别。因此,我的问题如下:

matplotlib.pylab包和matplotlib.pyplot包之间有什么区别。在哪种情况下,你会建议一个而另一个呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-04 00:02:04

the FAQ

Pyplot为matplotlib中的底层绘图库提供状态机接口。这意味着图形和轴是隐含和自动创建的,以实现所需的地块. Pylab将pyplot功能(用于绘图)与numpy功能(用于数学和处理数组)结合在一个名称空间中,使该命名空间(或环境)更像MATLAB。例如,我们可以像在MATLAB中一样调用sin和cos函数,也可以调用pyplot的所有特性。 一般倾向于非交互式绘图(即脚本)。-- pylab接口便于交互计算和绘图,因为它最小化了类型。(我的重点。)

请注意,

代码语言:javascript
复制
from pylab import *

还表演

代码语言:javascript
复制
from numpy import *

这覆盖了许多内置Python函数,如:

代码语言:javascript
复制
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 *污染了全局名称空间的话)。

例如,

代码语言:javascript
复制
In [32]: np.all([np.arange(3), np.arange(3)])
Out[32]: False

代码语言:javascript
复制
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()
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23451028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档