标签: ipython-notebook

iPython notebook 避免在函数内打印

我想阻止在 iPython 笔记本中打印的函数。

在标准 python 中,可以防止打印问题中回答的某些代码行:To prevent a function from print in the batch console in Python然而,此方法在 iPython notebook 中不起作用,在重新启动内核之前丢失输出。

我发现的最相似的功能是使用魔术函数避免显示完整的单元格:

%%capture capt
Run Code Online (Sandbox Code Playgroud)

然而,这个神奇的函数会阻塞整个单元格,在 iPython notebook 中有什么方法可以避免只打印代码中的一些行吗?

python ipython ipython-notebook

4
推荐指数
1
解决办法
2043
查看次数

我如何让 statsmodels.api 只绘制一次时间序列图?

我在为天气时间序列绘制 AR 和 MA 模型时遇到问题。例如:

from statsmodels.tsa.arima_process import arma_generate_sample

def gen_ar2(alpha1,alpha2,size):
    ar = [1,-alpha1,-alpha2]
    ma = [1]
    return arma_generate_sample(ar,ma,size)
Run Code Online (Sandbox Code Playgroud)

因此,如果我想绘制让我们说 x(t) = 0.75 x(t-1) - 0.125 x(t-2) + w(t),其中 w(t) 是平均值为 0 且方差为 1 的正态分布(让说)...在 ipython notebook 上绘制这通常会绘制两次,即

sm.graphics.tsa.plot_acf(gen_ar2(0.75,-0.125,size=5000),lags=40)
Run Code Online (Sandbox Code Playgroud)

这为我创建了两个图而不是一个。我如何阻止 ipython 这样做?

谢谢

python plot matplotlib ipython ipython-notebook

4
推荐指数
1
解决办法
1260
查看次数

未找到名为“间隔”的触发器

我一直在使用 APScheduler,在尝试运行代码时出现错误“找不到名为‘间隔’的触发器”

它在我的本地机器上完美无缺,但可以在我的云机器上运行。

我尝试过:通过 pip、easy_install 和手动重新安装 apscheduler;升级安装工具;升级所有依赖项。

编辑:代码

if __name__ == '__main__':
    scheduler = BlockingScheduler()
    scheduler.add_job(SMS, 'interval', minutes=1)
    scheduler.start()
    print Run Complete

    try:
        # This is here to simulate application activity (which keeps the main thread alive).
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()  # Not strictly necessary if daemonic mode is enabled but should be done if possible


LookupError                               Traceback (most recent call last)
<ipython-input-40-2895cd586d3f> in <module>()
      1 if __name__ == '__main__':
      2     scheduler = BlockingScheduler()
----> 3     scheduler.add_job(SMS, …
Run Code Online (Sandbox Code Playgroud)

python ipython-notebook apscheduler

4
推荐指数
2
解决办法
4024
查看次数

Ipython笔记本缓存问题

在 ipython notebook 中,我调用从我自己的模块导入的函数并运行一些代码。我注意到,如果我更改函数中的代码(笔记本外部)并执行笔记本,则旧版本的函数会运行。
当我记得时,ipython notebook 或 firefox 似乎正在缓存我可以用 ctrl-F5 清除的模块。是否有 ipython notebook 函数调用来确保我运行的是最新代码?

python ipython-notebook

4
推荐指数
1
解决办法
1137
查看次数

尝试在python中创建分组变量

我有一列年龄值,我需要将其转换为 18-29、30-39、40-49、50-59、60-69 和 70+ 的年龄范围:

对于 df 'file' 中的一些数据的示例,我有:

在此处输入图片说明

并希望前往:

在此处输入图片说明

我尝试了以下方法:

file['agerange'] = file[['age']].apply(lambda x: "18-29" if (x[0] > 16
                                       or x[0] < 30) else "other")
Run Code Online (Sandbox Code Playgroud)

我宁愿不只是进行分组,因为桶的大小不统一,但如果可行,我愿意将其作为解决方案。

提前致谢!

python ipython ipython-notebook

4
推荐指数
1
解决办法
2万
查看次数

如何为 IPython(笔记本)shell 命令提供内联输入?

我想将 IPython 笔记本与一些 shell 命令及其输入放在一起。在 bash 提示中,我可以使用“here-document”语法:

bash-3.2$ mysql -u root <<END_IPUT
> use mydb;
> show tables;
> END_INPUT
Run Code Online (Sandbox Code Playgroud)

如何在 IPython 中获得相同的效果,特别是在 jupyter 笔记本中?我知道如何将 shell 命令作为 IPython 执行为“行魔术”或“单元魔术”,例如:

In [7]:  !! ls -tF
Out[7]:  ['Demo-notebook.ipynb',
          'createdb.sql',
          ...
Run Code Online (Sandbox Code Playgroud)

我已经将IPython 视为一个系统 shell,它展示了如何启用一些语法细节。在以下之后,我可以运行系统命令而无需预先添加!!!

# Turn everything in $PATH into an alias; 
# then enable calling aliases without ! or %
%rehashx      
%autocall 2 
Run Code Online (Sandbox Code Playgroud)

但是这些都无助于为这些命令提供输入内联:here-document 语法在 IPython 中无效,并导致 python SyntaxError。那么我该怎么做呢?

ipython ipython-notebook ipython-magic jupyter-notebook

4
推荐指数
2
解决办法
5388
查看次数

Jupyter Notebook 中的旧 sklearn 版本

我通过终端更新sklearn版本

conda install scikit-learn=0.18
Run Code Online (Sandbox Code Playgroud)

如果我列出 conda list scikit-learn

# packages in environment at /Users/Claudia/anaconda:
scikit-learn              0.18.1              np111py27_1
scikit-learn              0.18.1                    <pip>
Run Code Online (Sandbox Code Playgroud)

但如果我在笔记本中运行

print('The scikit-learn version is {}.'.format(sklearn.__version__))
Run Code Online (Sandbox Code Playgroud)

结果是

The scikit-learn version is 0.17.1.
Run Code Online (Sandbox Code Playgroud)

如何解决和更新 Jupyter Notebook 中的版本?

python python-2.7 scikit-learn ipython-notebook jupyter-notebook

4
推荐指数
1
解决办法
1万
查看次数

添加用于向上移动单元格和向下移动单元格的键盘快捷键

我正在尝试添加 Cntl+K 和 Cntl+J 快捷方式来快速上下移动单元格。我在 Github 上查看了有关添加快捷方式的问题,并找到了一个可行的答案:

“对于喜欢此快捷方式的人(如我),请将其添加到您的 ~/.ipython/profile_default/static/custom/custom.js:

$([IPython.events]).on("app_initialized.NotebookApp", function () {

IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-k', function (event) {
    IPython.notebook.move_cell_up();
    return false;
});

IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-j', function (event) {
    IPython.notebook.move_cell_down();
    return false;
});
Run Code Online (Sandbox Code Playgroud)

});

但是我的 users/{my name}/.ipython/profile_default 目录没有静态文件夹。我尝试添加丢失的文件夹和 custom.js 文件,并重新打开 Anaconda 提示,但这并没有添加丢失的快捷方式。

另一个答案有同样的问题:

“使用以下内容:

$ cat ~/.jupyter/custom/custom.js

define(["base/js/namespace"], function(Jupyter){
    console.info('Binding Ctrl-J/K to move cell up/down');
    Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-k','jupyter-notebook:move-cell-up');
    Jupyter.keyboard_manager.command_shortcuts.add_shortcut('Ctrl-j','jupyter-notebook:move-cell-down');
});
Run Code Online (Sandbox Code Playgroud)

这个答案也不起作用(添加丢失的文件夹和 custom.js 文件不起作用)。

ipython ipython-notebook jupyter jupyter-notebook

4
推荐指数
1
解决办法
1万
查看次数

从单个 jupyter/ipython 单元中绘制多个 python-igraph 图

与此问题类似,我想使用以下代码从单个 ipython-notebook 单元格中绘制多个图形:

[1]:
%matplotlib inline
import igraph # it is `pip install python-igraph` on py2
import matplotlib.pyplot as plt
import numpy as np

[2]:
# draws a graph successfully
igraph.plot(igraph.Graph.Erdos_Renyi(10, .5))

[3]:
for p in np.arange(.3, .8, .1):
    g = igraph.Graph.Erdos_Renyi(10, p)
    igraph.plot(g)
Run Code Online (Sandbox Code Playgroud)

如何从[3]笔记本上的单元格显示多个图形?

如果我想绘制一些像这样的 matplotlib 图表,似乎可以使用这个解决方案:

[4]:
for p in np.arange(.3, .8, .1):
    g = igraph.Graph.Erdos_Renyi(10, p)
    plt.loglog(sorted(g.degree(), reverse=True), marker='o')
    plt.show()
Run Code Online (Sandbox Code Playgroud)

但这不适用于 igraph 图 AFAICS。有什么方法可以转换igraph.drawing.Plot为更熟悉 matplotlib 的对象吗?

python matplotlib igraph ipython-notebook jupyter-notebook

4
推荐指数
1
解决办法
1033
查看次数

如何以编程方式设置交互参数?

假设我有函数,它接受参数列表。列表可以是可变长度的,功能也可以。例如:

import math
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
%matplotlib inline  

def PlotSuperposition(weights):
    def f(x):
        y = 0
        for i, weight in enumerate(weights):
            if i==0:
                y+=weight
            else:
                y += weight*math.sin(x*i)
        return y
    vf = np.vectorize(f)
    xx = np.arange(0,6,0.1)
    plt.plot(xx, vf(xx))
    plt.gca().set_ylim(-5,5)

PlotSuperposition([1,1,2])
Run Code Online (Sandbox Code Playgroud)

显示

在此处输入图片说明

我可以对给定数量的参数进行硬编码交互,就像这里

interact(lambda w0, w1, w2: PlotSuperposition([w0,w1,w2]), w0=(-3,+3,0.1), w1=(-3,+3,0.1), w2=(-3,+3,0.1))
Run Code Online (Sandbox Code Playgroud)

这表现了

在此处输入图片说明

但是如何以编程方式定义滑块的数量?

我试过

n_weights=10
weight_sliders = [widgets.FloatSlider(
        value=0,
        min=-10.0,
        max=10.0,
        step=0.1,
        description='w%d' % i,
        disabled=False, …
Run Code Online (Sandbox Code Playgroud)

python interactive ipython-notebook jupyter-notebook

4
推荐指数
1
解决办法
1394
查看次数