如果在iPython或任何多行命令中引入for循环,我该如何返回并向其添加行?我跑了这个:
for row in table.find_all('tr'):
cells = row.find_all('td')
for c,cell in enumerate(cells):
print c,":",cell.get_text().strip()
try:
this = cells[0]
that = cells[1]
the_docket = cells[2]
other_thign = cells[3]
jumble = re.sub('\s+',' ',str(cells[5])).strip()
except:
"Nope"
Run Code Online (Sandbox Code Playgroud)
并意识到我需要为它添加一行,但我不能只是在运行命令的iPython,b/c中点击"输入".那么我可以在iPython中编辑那个多行命令吗?
是否有IPython的GUI允许我打开/运行/编辑Python文件?我在IDLE中的工作方式是打开两个窗口:shell和.py文件.我编辑.py文件,运行它,并与shell中的结果进行交互.
可以像这样使用IPython吗?还是有另一种工作方式吗?
更新: - 这个问题在机器重启后解决了.还没有弄清楚为什么之前发生这种错误.
我有一个函数加载一个巨大的numpy数组(~980MB)并返回它.
当我第一次启动Ipython并调用此函数时,它会将数组加载到变量中而没有任何问题.
但是,如果我再次运行相同的命令,它将退出提出"内存错误".
我试过以下,
del hugeArray
Run Code Online (Sandbox Code Playgroud)
仍然发生同样的错误.我甚至尝试了以下内容
del hugeArray
gc.collect()
gc.collect()
Run Code Online (Sandbox Code Playgroud)
最初,gc.collect()返回145并且第二次调用返回48.但即使在此之后我调用该函数时,仍然会引发内存错误.
我可以再加载的唯一方法是重启ipython.我可以做些什么来释放ipython中的所有内存,以便我不必重新启动它?
----------------更新
以下是输出 %whos
Variable Type Data/Info
------------------------------
gc module <module 'gc' (built-in)>
gr module <module 'Generate4mRamp' <...>rom 'Generate4mRamp.pyc'>
np module <module 'numpy' from '/us<...>ages/numpy/__init__.pyc'>
plt module <module 'matplotlib.pyplo<...>s/matplotlib/pyplot.pyc'>
Run Code Online (Sandbox Code Playgroud)
除此之外,gr是我的模块,包含我用来加载数据立方体的函数.
---------如何重现错误
以下简单函数能够重现错误.
import numpy as np
import gc
def functionH():
cube=np.zeros((200,1024,1024))
return cube
testcube=functionH() #Runs without any issue
del testcube
testcube=functionH() # Raises Memory Error
del testcube
gc.collect()
gc.collect()
testcube=functionH() # Still Raises …Run Code Online (Sandbox Code Playgroud) 这是一个IPython笔记本的例子,除了输入和输出单元,我们还有一个纯文本.我如何在我的IPython笔记本中做同样的事情?此刻我有inly In和Out细胞.
如果我用matplotlib内联启动一个ipython笔记本,有没有办法随后绘制一个图形,以便以"标准",非内联方式显示,而不必在没有内联命令的情况下重新加载笔记本?我希望能够将一些数字内联到笔记本中,但其他人则采用传统的交互模式,我可以放大和平移.
我安装了anaconda来使用pandas和scipy.我阅读和观看熊猫教程,他们都说要打开ipython笔记本
ipython notebook --pylab==inline
Run Code Online (Sandbox Code Playgroud)
但当我这样做时,我收到一条消息说
"Support for specifying --pylab on the command line has been removed. Please use '%pylab = inline' or '%matplotlib =inline' in the notebook itself"
Run Code Online (Sandbox Code Playgroud)
但这不起作用.然后,当我尝试"plot(arange(10))"时,我收到一条消息"没有定义名称'情节'." 我试图从.csv文件中绘制数据并获得
"matplotlib.axes._subplots.AxesSubplot at 0xebf8b70".
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我在Linux Mint 17.3上.如何更改Jupyter笔记本使用的默认浏览器?我已将笔记本电脑安装为Anaconda 3的一部分,并在我的默认浏览器(即Chrome)中打开.但出于某种原因,Chrome不会让我制作新的ipynb.单击"新建"按钮根本不做任何事情.所以我将笔记本网址复制到Firefox,它在那里工作得非常好.
有没有办法让它适用于Chrome?否则,如何更改默认浏览器?我遇到的通常答案是我必须更改c.NotebookApp.browser选项,但我找不到办法这样做,因为尝试ipython_notebook_config在终端中找到4个结果:
./anaconda3/lib/python3.5/site-packages/jupyter_core/tests/dotipython/profile_default/ipython_notebook_config.py
./anaconda3/lib/python3.5/site-packages/jupyter_core/tests/dotipython_empty/profile_default/ipython_notebook_config.py
./anaconda3/pkgs/jupyter_core-4.0.6-py35_0/lib/python3.5/site-packages/jupyter_core/tests/dotipython/profile_default/ipython_notebook_config.py
./anaconda3/pkgs/jupyter_core-4.0.6-py35_0/lib/python3.5/site-packages/jupyter_core/tests/dotipython_empty/profile_default/ipython_notebook_config.py
Run Code Online (Sandbox Code Playgroud) IPython%timeit magic命令可以很好地测量运行某些Python代码所需的时间.现在,我想在Python脚本中使用类似的东西.我知道timeit模块,但它有几个缺点,例如,如何自适应地选择运行次数?即默认代码
import timeit
t=timeit.Timer("code(f)", "from __main__ import code,f")
t.timeit()
Run Code Online (Sandbox Code Playgroud)
运行代码数百万次.%timeit IPyhton magic命令会自动执行此操作.我建议我可以使用MATLAB代码 http://www.mathworks.com/matlabcentral/fileexchange/18798
自动完成所有工作(并且还告诉函数的开销是否很大).
如何从Python脚本中调用%timeit magic(或者可能有更好的时序解决方案)?
我正在I使用%matplotlibplot命令在内联模式下使用IPython笔记本绘制NumPy值的数组plt.plot(I,'o').
结果输出是:
<matplotlib.figure.Figure at 0x119e6ead0>
Out[159]:
[<matplotlib.lines.Line2D at 0x11ac57090>,
<matplotlib.lines.Line2D at 0x11ac57310>,
<matplotlib.lines.Line2D at 0x11ac57510>,
<matplotlib.lines.Line2D at 0x11ac57690>,
<matplotlib.lines.Line2D at 0x11ac57810>,
<matplotlib.lines.Line2D at 0x11ac57990>,
<matplotlib.lines.Line2D at 0x11ac57b10>,
....
....
]
Run Code Online (Sandbox Code Playgroud)
然后我的情节显示在这些输出线下方.
有没有办法只显示情节并隐藏<matplotlib.lines.Line2D at ...>输出?
我正在努力为python做一些科学的东西设置一个良好的环境.为此,我安装了Jupyter和miniconda.
然后我希望能够拥有不同的环境,并将它们与Jupyter笔记本一起使用.所以我用conda创建了两个自定义env:py27和py35.
> conda env list
# conda environments:
#
py27 /Users/***/miniconda3/envs/py27
py35 /Users/***/miniconda3/envs/py35
root * /Users/***/miniconda3
Run Code Online (Sandbox Code Playgroud)
然后在我的笔记本上我有两个内核python 2和python 3.在笔记本内部,我使用python3内核获得以下内容:
> import sys
> print(sys.executable)
/Users/***/miniconda3/envs/py35/bin/python
Run Code Online (Sandbox Code Playgroud)
这与python2内核:
> import sys
> print(sys.executable)
/usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)
sys.executable为python2的miniconda env?source activate py35一个链接jupyter notebook吗?我想我真的错过了什么.
谢谢大家.
---编辑
我有多个jupyter bin:
> where jupyter
/usr/local/bin/jupyter
/usr/local/bin/jupyter
/Users/ThomasDehaeze/miniconda3/bin/jupyter
Run Code Online (Sandbox Code Playgroud)
我这里只有一个内核/usr/local/share/jupyter/kernels/python2.但在Jupyter里面,我有两个内核,python2而且python3.我在哪里可以找到另一个?
我修改kernel.json自/usr/local/share/jupyter/kernels/python2:
{
"display_name": "Python 2",
"language": "python", …Run Code Online (Sandbox Code Playgroud)