繁体   English   中英

什么是%pylab?

[英]What is %pylab?

我一直看到人们在各种代码片段中使用%pylab pylab,尤其是在 iPython 中。 但是,我看不到%pylab在 Learning Python(以及我拥有的其他几本 Python 书籍)中的任何地方提及,并且不确定它的含义。

我相信答案很简单,但有人能启发我吗?

%pylab是在IPython中一个神奇的功能

ipython 中的魔术函数总是以百分号 (%) 开头,后面没有任何空格,后面是一个小文本字符串; 本质上,ipython 魔术函数定义了对交互式工作特别有用的快捷方式,例如,让您了解魔术函数在 python 中的工作原理,我最喜欢的一些:

  • 查看 cwd 目录内容:

     %ls
  • 要使用空命名空间在 ipython 中运行脚本,请输入空格然后输入脚本名称:

     %run
  • 执行代码片段(特别是对于通常会导致抛出 _IndentationError_ 的多行片段):

     %paste

当在 IPython 提示符下输入%pylab魔法函数时,它会触发 Matplotlib 中各种模块的导入。

哪些模块? 好吧,那些包含在pylab界面下的。

令人敬畏的 Matplotlib 绘图库有两个不同的接口:一个是 Pythonic 接口,另一个是原始的类似 MATLAB 的接口,用于在交互式提示下绘图。

前者通常是这样导入的:

from matplotlib import pyplot as PLT

确实,pyplot 有自己的魔术 python 魔术功能

%pyplot

为什么有两个不同的接口? Matplotlib 的原始接口是 pylab; 后来才添加了pythonic接口。 项目开始时,脚本和应用程序开发不是 Matplotlib 的主要用例,在 python shell 中绘图是。

显然, John Hunter(Matplotlib 的创建者)希望在 Python 中包含交互式绘图,因此他向 Fernando Perez(FP)的 IPython 项目提交了一个补丁。 FP 当时是一名博士生,并告知 JH,他将有一段时间无法查看路径。 结果,JH 创建了 Matplotlib。 重要的是,Matplotlib 开始是一个基于 shell 的绘图方案。

pylab界面确实更适合交互工作:

from pylab import *

x, y = arange(10), cos(x/2)
plot(x, y)
show()

并使用 pyplot 界面:

from matplotlib import pyplot as PLT
import numpy as NP

x, y = NP.arange(10), NP.cos(x/2)
fig = PLT.figure()
ax1 = fig.add_subplot(111)
ax1.plot(x, y)
PLT.show()

%pylab是输入以下所有命令的快捷方式 - 实质上是将 numpy 和 matplotlib 添加到您的会话中。 它已作为过渡工具包含在 iPython 中,目前的建议是您不应使用它 核心原因是以下命令集在全局命名空间中导入了太多内容,而且它们不允许您将 matplotlib 的模式从 UI 更改为 QT 或其他内容。 您可以在http://nbviewer.ipython.org/github/Carreau/posts/blob/master/10-No-PyLab-Thanks.ipynb?create=1 上查看这背后的历史和推理。

这就是%pylab所做的:

import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot

from IPython.core.pylabtools import figsize, getfigs

from pylab import *
from numpy import *

这是我在笔记本开始时使用的:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

更多关于 IPython 魔法的最新文档在这里

Magics 函数通常以类似 shell 的语法形式出现,但在 python 函数的底层。 语法和赋值可能性与 bang (!) 语法类似,但具有更大的灵活性和功能。 魔术函数以百分号 (%) 或双百分号 (%%) 开头。

一点点在这里,更具体有关%pylab魔术在这里

 %pylab [--no-import-all] [gui]

加载 numpy 和 matplotlib 以交互工作。

这个函数可以让你在 IPython 会话期间的任何时候激活 pylab(matplotlib、numpy 和交互式支持)。

%pylab进行以下导入:

import numpy
import matplotlib
from matplotlib import pylab, mlab, pyplot
np = numpy
plt = pyplot

from IPython.display import display
from IPython.core.pylabtools import figsize, getfigs

from pylab import *
from numpy import *

%pylab是一个“魔法函数”,您可以在 IPython 或Interactive Python 中调用它。 通过调用它,IPython 解释器将导入matplotlibNumPy模块,以便您可以方便地访问它们的功能。 举个例子,

rich@rich-ubuntu:~/working/fb_recruit/working$ ipython
Python 2.7.6 |Anaconda 1.8.0 (64-bit)| (default, Nov 11 2013, 10:47:18) 
Type "copyright", "credits" or "license" for more information.

IPython 1.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: arange(4)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-1-2e43d7eb1b3e> in <module>()
----> 1 arange(4)

NameError: name 'arange' is not defined

In [2]: %pylab
Using matplotlib backend: Qt4Agg
Populating the interactive namespace from numpy and matplotlib

In [3]: arange(4)
Out[3]: array([0, 1, 2, 3])

In [4]: 

顾名思义,Pylab 是一个类似于 MATLAB 的前端,用于在 Python 中进行数学运算。 iPython 对 Pylab 有特定的支持,它是使用%pylab魔法命令调用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM