什么是%pylab?

Ant*_*ton 54 python matplotlib

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

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

dou*_*oug 51

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

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

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

哪个模块?好吧,那些包含在pylab接口下的.

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

前者通常是这样导入的:

from matplotlib import pyplot as PLT
Run Code Online (Sandbox Code Playgroud)

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

%pyplot
Run Code Online (Sandbox Code Playgroud)

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

显然 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()
Run Code Online (Sandbox Code Playgroud)

并使用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()
Run Code Online (Sandbox Code Playgroud)

  • 我起初并不是真的了解这一点.我发现这个资源更具启发性:https://ipython.org/ipython-doc/dev/interactive/magics.html (5认同)

Shi*_*hah 40

%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 *
Run Code Online (Sandbox Code Playgroud)

这是我在笔记本开头使用的内容:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
Run Code Online (Sandbox Code Playgroud)

  • `inline`允许你在内联而不是在新窗口或shell中绘制图形,以查看没有内联的效果检查 (4认同)
  • 格雷特回答!但是`inline`做了什么? (3认同)

小智 8

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

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

这里有一点点,更具体地说是关于这里%pylab魔法。

 %pylab [--no-import-all] [gui]
Run Code Online (Sandbox Code Playgroud)

加载 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 *
Run Code Online (Sandbox Code Playgroud)


kin*_*all 5

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


ric*_*izy 5

%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]: 
Run Code Online (Sandbox Code Playgroud)