什么是%pylab?

时间:2014-01-06 23:33:18

标签: python matplotlib

我一直看到人们在各种代码snippit中使用%pylab,特别是在iPython中。但是,我无法在学习Python(以及我所拥有的其他几本Python书籍)的任何地方看到%pylab被提及的地方,并且我不确定它的含义。

我确信答案很简单,但任何人都可以启发我吗?

5 个答案:

答案 0 :(得分:48)

%pylab ipython 中的魔术功能

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

  • 查看cwd目录内容:

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

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

    %paste
    

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

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

令人敬畏的Matplotlib绘图库具有 两个 不同的接口:pythonic接口,以及用于在交互式提示下进行绘图的原始MATLAB。

前者通常是这样导入的:

from matplotlib import pyplot as PLT

确实,pyplot有自己的魔法蟒蛇魔法功能

%pyplot

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

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

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()

答案 1 :(得分:37)

%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

答案 2 :(得分:4)

%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]: 

答案 3 :(得分:4)

有关IPython魔术here的最新文档。

  

Magics函数通常以类似shell的语法形式出现,   但是在引擎盖python功能下。语法和赋值   可能性与bang(!)语法类似,但有   更多的灵活性和力量。魔术功能以百分号开头   (%)或双倍百分比(%%)。

稍微here,更具体地说是%pylab魔法here

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

加载numpy和matplotlib以交互方式工作。

     

此功能可让您激活pylab(matplotlib,numpy和   互动支持)在IPython会话期间的任何时候。

%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 *

答案 4 :(得分:2)

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