IPython 有无笔记本差异

IPython with and Without Notebook Differences

我最喜欢的 Python 最重要的即兴创作之一是 IPython 和 IPython Notebook。

我正在观看并重复此 video 中显示的内容并发现了一些问题。

如视频中所述,我使用 ipython --pylab 启动 IPython。 我使用 ipython notebook --pylab 启动 IPython Notebook。

问题:scatter() 在 IPython NoteBook 中无法工作(我得到一个 NameError)但在 IPython 中工作正常。 函数 rand() 也是如此。我猜 pylabmatplotlibscipynumpyrandom 和其他基本库一起加载。

如果我错了请告诉我。顺便说一下,我的 IPython 和 IPython NoteBook 都从我的 Anaconda Dist. 加载,如果这意味着什么的话。

此外,当我使用 --pylab 时我可以知道所有加载内容的任何资源都会有所帮助。

谢谢。

这就是 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 *

也就是说,建议您在没有标志的情况下启动笔记本(只是 ipython notebook),然后 运行:

%matplotlib inline

有关详细信息,请参阅 No Pylab Thanks

关于你的分散问题,你应该尝试以下方法:

%matplotlib inline
import matplotlib.pyplot as plt

plt.scatter([1,2], [1,2])

这是您不应该使用 %pylab inline 的另一个例子:

%pylab inline 之前:bool(all(i for i in range(3))) => False

%pylab inline 之后:bool(all(i for i in range(3))) => True

%pylab inline 语句导入 numpy.all,它具有不同的行为。看%pylab inline前后help(all)。此外,尝试 print(', '.join(sorted(globals().keys()))) 之前和之后查看导入的大量内容。

正如其他人所提到的,%matplotlib inline 避免了这个问题以及它导致的后续微妙/难以发现的问题。