ipython和python是不是同一个软件_为什么SciPy在IPython和Python中的表现会有很大的不同?...

我写了这个测试脚本:

import numpy as np

import scipy.linalg

n = 130

r = np.array(np.random.normal(size=(n, n)), dtype=np.float32)

e = scipy.linalg.eig(r, left=False, right=False)

print e.mean()

使用IPython运行它,代码总是在几秒钟内成功(我尝试了大约十几次)

使用Python,代码总是无法收敛(或只是挂起,对于一些较大的n)与一个消息,如

Traceback (most recent call last):

File "strange.py", line 6, in

e = scipy.linalg.eig(r, left=False, right=False)

File "/usr/lib/python2.7/dist-packages/scipy/linalg/decomp.py", line 179, in eig

"with order >= %d have converged)" % info)

numpy.linalg.linalg.LinAlgError: eig algorithm did not converge (only eigenvalues with order >= 130 have converged)

什么解释了Python和IPython行为的差异?相关软件版本有:

> Ubuntu 12.04,64位

> Numpy 1.6.1

> SciPy 0.9.0

> Python 2.7.3

IPython 0.12.1

编辑

我仅用单精度观察到这种行为,n> = 130.如果n = 129,则代码可以在Python和IPython中工作.

在导入后添加np.random.seed(1234)提供相同的结果:IPython收敛,而Python不会.

scipy.linalg .__ file__ =’/usr/lib/python2.7/dist-packages/scipy/linalg/__init__.pyc’.尽管如此,我猜猜IPython和Python以某种方式设法拉入不同的LAPACK版本,但是如何呢?

我注意到这个奇怪的方式是我在尝试IPython,然后将代码粘贴到我用Python运行的* .py文件中.你可以想象一下我有多困惑.

编辑2.

在Python和IPython中,np.geterr()是{‘divide’:’warn’,’invalid’:’warn’,’over’:’warn’,’under’:’ignore’}

$ls -l /etc/alternatives/libblas.so

lrwxrwxrwx 1 root root 37 Jun 29 18:21 /etc/alternatives/libblas.so -> /usr/lib/openblas-base/libopenblas.so

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值