2015-01-11 2 views
1

Одна из самых важных импровизаций Python, которые являются моими фаворитами, - это IPython и IPython Notebook.IPython с и без ноутбуков Различия

Я наблюдал и повторял то, что показано в этом video, и нашел некоторые проблемы.

Как указано в видео, я использую ipython --pylab для запуска IPython. И я использую ipython notebook --pylab для запуска IPython Notebook.

Вопросы: scatter() не работает в IPython NoteBook (я получаю NameError), но отлично работает в IPython. То же самое относится к функции rand(). Я думаю, pylab загружен вместе с matplotlib, scipy, numpy, random и другими необходимыми библиотеками.

Скажите, пожалуйста, если я ошибаюсь. Кстати, как мои IPython, так и IPython NoteBook загружаются с моего Anaconda Dist., если это значит что угодно.

Также любой ресурс, где я могу знать, что все загружается, когда я использую --pylab, поможет.

Спасибо.

+0

Я бы порекомендовал против использования '--pylab'. Вместо этого используйте '% matplotlib inline' в начале вашего ноутбука. После этого вы можете импортировать пакеты, которые хотите использовать, не загромождая пространство имен. – cel

+0

Спасибо, и я запомню ваш совет не использовать флаг пилаба. И да '% matplotlib inline' действительно работал. Теперь я больше понимаю о '--pylab'. –

ответ

2

Это то, что делает 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]) 
+0

Большое спасибо @elyase. Я сработал. Я уверен, что обойду его без использования флага '--pylab'.«Нет PyLab Пожалуйста» статья действительно полезна, и мое понимание, безусловно, выросло. –

0

Вот еще один пример того, почему вы не должны использовать %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, который имеет другое поведение. См. help(all) до и после %pylab inline для просмотра. Кроме того, попробуйте print(', '.join(sorted(globals().keys()))) до & после того, как увидите огромное количество вещей, которые импортируются.

Как упоминалось другими, %matplotlib inline избегает этого и последующих тонких/труднодоступных проблем, которые он вызывает.

Смежные вопросы