小编Nat*_*ate的帖子

Anaconda Python导致终端启动/提示缓慢

我最近在Linux Mint 19.0桌面上安装了Anconda Python.实际上,我以前安装过它,一切都很好,就像我的Mint 19.0笔记本电脑一样.但是,我最近不得不擦拭桌面并重新安装所有内容.现在,每当我打开终端程序时,提示都需要几秒钟才能显示.我已经添加了set -x,将+ x设置为我的bash配置文件的开头和结尾,以诊断减速的位置.

终端负载挂起在这一行:

/home/auerilas/anaconda3/bin/conda shell.bash hook
Run Code Online (Sandbox Code Playgroud)

几秒钟 它以前从未这样做过,也没有在我的其他计算机上完成.有关为什么会发生这种情况的任何想法?这不是一个交易破坏者,但它很烦人.

python bash anaconda

12
推荐指数
2
解决办法
3041
查看次数

无法手动关闭matplotlib绘图窗口

我在Mac OS X Yosemite上运行Python v2.7和matplotlib v1.5.0.到目前为止,我能够在交互式解释器中运行我的脚本,显示一个情节,然后手动杀死窗口.例如

import numpy as np
x = np.arange(1,10)
y = np.arange(1,10)
plt.plot(x,y)
plt.show()
Run Code Online (Sandbox Code Playgroud)

这曾经很好.窗口将关闭,我将返回提示.但是,现在当我点击红色X关闭窗口时,窗口仍保持打开状态.我的命令提示符返回并正常工作,但窗口卡住了,我看到旋转的沙滩球在它上面.

在此输入图像描述

(请注意,光标不会出现在图像中,但是您可以看到红色X显示为灰色,因为我已经关闭但它被卡住了).

直到我第二次运行脚本第一个窗口关闭,然后我就陷入第二个打开的情节,同样的问题.我有点困惑,因为这只发生在最近.到目前为止,窗户将关闭.

这不是一个大问题,因为Python仍在运行,我仍然可以制作新的情节,但我很好奇为什么窗口会突然打开.有什么建议?

UPDATE

我通过切换交互式后端解决了这个问题.Qt4Agg或TkAgg作为交互式后端解决了这个问题.但问题仍然是为什么macosx和CocoaAgg后端显示了这种行为.

python matplotlib python-2.7

10
推荐指数
2
解决办法
4239
查看次数

设置Sympy中相对于其他变量的变量的假设

我知道python中的同情可以设置变量的假设,例如x是正数,负数,实数,复数等.我想知道sympy是否可以设置变量相对于其他变量的假设.例如,如果我有变量x和y,我可以设置sympy以假设其解决方案中的x> y.或者,如果我有两个变量a和B,我可以设置同情假设a + 2B <1?这些假设可能有助于简化解决()和特征向量的复杂解决方案.

我看了一遍,并没有找到有关在同情中设置这些假设的信息.

我问,因为我试图找到特定矩阵的特征向量

a,b = symbols('a,b', nonnegative=False)
M = Matrix([ [1-a-2*b, a, b, b], 
             [a, 1-a-2*b, b, b],
             [b, b, 1-a-2*b, a],
             [b, b, a, 1-a-2*b] ])
Run Code Online (Sandbox Code Playgroud)

Sympy正确地找到了特征值

M.eigenvals()
Run Code Online (Sandbox Code Playgroud)

我通过MATLAB和WolframAlpha证实了这一点,它们都给出了相同的结果.然而,特征向量是一团糟

M.eigenvects()
Run Code Online (Sandbox Code Playgroud)

MATLAB和WolframAlpha都返回[1,1,1,1] [-1,-1,1,1] [0,0,-1,1] [-1,1,0,0]的特征向量,它们是正确的特征向量.我甚至都没有试图简化同意的结果,因为它们非常漫长而复杂.我怀疑它与变量的假设有关,比如指定a + 2b <1,但我不确定.

python math sympy

8
推荐指数
2
解决办法
6285
查看次数

在pip软件包构建中编译Cython

我正在开发一个Python软件包EcoPy,该软件包主要是用纯Python编写的。主文件夹称为ecopy。有一个名为Regress的子文件夹,其中有一个已经建立的Cython文件。setup.py主文件包含以下代码:

ext_modules = cythonize([
    Extension(
        'ecopy.regression.isoFunc', ['ecopy/regression/isoFunc.pyx'], **opts),
])
Run Code Online (Sandbox Code Playgroud)

当我跑步

sudo pip install ecopy -e . --upgrade --force-reinstall
Run Code Online (Sandbox Code Playgroud)

该模块构建良好。如果我删除了它,它甚至会重新编译isoFunc.c文件。问题在于,Cython不会将.c文件转换为.so文件,而导入该功能需要该文件。如果我尝试在没有模块的情况下加载模块,则会得到

ImportError: No module named isoFunc
Run Code Online (Sandbox Code Playgroud)

如果我使用命令行手动设置文件

python setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)

Cython会生成.so文件。如何使用pip生成.so文件?我试图通过阅读他们的代码来弄清楚statsmodels是如何做到的,但是老实说,这对我来说是个谜。

pip命令几乎错过了build_ext参数。

python pip cython

5
推荐指数
1
解决办法
1244
查看次数

Sympy Solve()给出了错误的答案

我正在使用sympy来处理一些数学模型,我发现由于某种原因,sympy.solve()给了我错误的答案.

import sympy as sm
p, WAA, WAa, Waa = sm.symbols( 'p, WAA, WAa, Waa' )

num = p**2*WAA + p*(1-p)*WAa
denom = p**2*WAA + 2*p*(1-p)*WAa + (1-p)**2*Waa

dipMod = sm.Eq( num / denom , p )
eq = sm.solve(dipMod, p)
print eq
Run Code Online (Sandbox Code Playgroud)

结果应为0,1和(WAa-Waa)/(2WAa-WAA-Waa).我在MATLAB中解决了我的公式,给出了正确的答案.

有趣的是,sympy正确地解决了一个更简单的方程式:

hapMod = sm.Eq(  WAA*p / (WAA*p + Waa*(1-p)), p )
print sm.solve(hapMod, p)
Run Code Online (Sandbox Code Playgroud)

这给出了0和1的解决方案.我做错了什么或者是否有解决的错误?如果可能的话,我想坚持使用Python,而不是切换到MATLAB.

更新:

我又遇到了这个问题:

p, WA, Wa = sm.symbols('p, WA, Wa')

hapMod = sm.Eq( p*WA / (p*WA + (1-p)*Wa) , p )
hapModEq …
Run Code Online (Sandbox Code Playgroud)

python math symbolic-math sympy

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

标签 统计

python ×5

math ×2

sympy ×2

anaconda ×1

bash ×1

cython ×1

matplotlib ×1

pip ×1

python-2.7 ×1

symbolic-math ×1