【问题标题】:Confusion between numpy, scipy, matplotlib and pylabnumpy、scipy、matplotlib 和 pylab 之间的混淆
【发布时间】:2012-10-10 20:34:50
【问题描述】:

Numpy、scipy、matplotlib 和 pylab 是使用 python 进行科学计算的常用术语。

我刚学了一点pylab,就搞糊涂了。 每当我想导入 numpy 时,我总是可以这样做:

import numpy as np

我只是认为,一旦我这样做了

from pylab import *

numpy 也将被导入(带有np 别名)。所以基本上第二个比第一个做了更多的事情。

我想问几件事:

  1. pylab 只是 numpy、scipy 和 matplotlib 的包装器对吗?
  2. 由于 np 是 pylab 中的 numpy 别名,那么 pylab 中的 scipy 和 matplotlib 别名是什么? (据我所知,plt 是 matplotlib.pyplot 的别名,但我不知道 matplotlib 本身的别名)

【问题讨论】:

  • 在一般风格的注释中,我会避​​免在交互式 shell 之外使用 pylab(和 * 导入)。 Pylab 无论如何都是 matplotlib 的一个奇怪的附录。
  • @unutbu:感谢您的链接,这让事情变得清晰。我认为这也意味着 scipy 是一个完全不同的模块,因此与 pylab 无关
  • @goFrendiAsgard:您可以通过查看 /usr/lib/pymodules/python2.7/matplotlib/pylab.py 来准确检查 pylab 导入的内容(Windows 或 OSX 的确切路径略有不同;询问您是否需要帮助查找它。)
  • 谢谢,这就是我要找的。我想我会使用更“pythonic”的方式,因为 pylab 只是用于 matlab 的他们的包装器。

标签: python numpy matplotlib scipy


【解决方案1】:
  1. 不,pylabmatplotlib 的一部分(在matplotlib.pylab 中),并试图为您提供类似 MatLab 的环境。 matplotlib 有许多依赖项,其中 numpy 以通用别名 np 导入。 scipy 不是 matplotlib 的依赖项。

  2. 如果您运行ipython --pylab,自动导入会将matplotlib.pylab 中的所有符号放入全局范围。就像你写的那样,numpy 被导入到 np 别名下。来自matplotlib 的符号在mpl 别名下可用。

【讨论】:

  • @Benjamin Bannier 那么这是什么 - wiki.scipy.org/PyLab?这让我很困惑。
  • @shahensha ,好像有两个 PyLabs;根据您发送的链接:“...在此页面上表达的 新 PyLab 的愿景与 作为 matplotlib 一部分的现有 pylab 包之间的区别”跨度>
【解决方案2】:

Scipy 和 numpy 是旨在为 python 带来高效和快速数值计算的科学项目。

Matplotlib 是 python 绘图库的名称。

Pyplot 是 matplotlib 的交互式 api,主要用于 jupyter 等笔记本。你一般这样使用它:import matplotlib.pyplot as plt

Pylab 与 pyplot 相同,但具有额外的功能(目前不鼓励使用)。

  • pylab = pyplot + numpy

在此处查看更多信息:Matplotlib, Pylab, Pyplot, etc: What's the difference between these and when to use each?

【讨论】:

【解决方案3】:

由于互联网上有使用pylab 的示例,有些人(比如我)可能仍然对 pylab 的使用感到困惑,因此这里引用了官方 matplotlib 常见问题解答:

pylab 是一个方便的模块,可在单个名称空间中批量导入 matplotlib.pyplot(用于绘图)和 numpy(用于数学和处理数组)。虽然很多例子都使用了pylab,但是已经不再推荐了。

所以,TL;DR;是不要使用pylab,期间。根据需要分别使用pyplot和导入numpy

Here is the link 供进一步阅读和其他有用的示例。

【讨论】:

  • 最近打开了pylab,看到的东西吓得赶紧退了回来。这怎么会被认为是正常的?
  • 是的,谁知道呢。
猜你喜欢
  • 1970-01-01
  • 2014-05-31
  • 2015-04-06
  • 1970-01-01
  • 2011-09-06
  • 2016-09-22
  • 2015-06-01
  • 2020-01-08
  • 2012-10-21
相关资源
最近更新 更多