python numpy.irr()不能使用超过35个值

时间:2016-01-24 18:28:34

标签: python windows numpy

使用np.irr()函数时,35个值似乎可以正常工作

np.irr([-100.0] + ([25]*35))

但是35个vaues关闭了python。

np.irr([-100.0] + ([25]*36))

关闭python

screenshot

1 个答案:

答案 0 :(得分:0)

我已经在Windows上测试了1.10.4 / Python 2.7.3 32位,即使有更大的列表(3000项!)也无法复制崩溃,但我注意到Process Explorer的Python使用率是暴涨。

这是有道理的,因为[25] * 36正在分配该长度的列表,然后将其传递给fn,计算,然后返回。似乎.irr不支持生成器作为输入,如果你在非常大的迭代上尝试这种类型的函数,这有点烦人。在fn完成后,Numpy似乎没有释放此处使用的所有内存,这也可能导致问题。

在Anaconda上,您能指定Numpy是否使用英特尔数学核心函数库(MKL)构建?这是在本地构建它的选项,我确实选择了这个。我的理解是MKL用于优化多核。编译的依赖项(如DLL)中的错误可能会在流程完全崩溃时出现,类似于您所看到的。

很抱歉,这是作为答案发布的(应该是评论,但由于< 50声誉,我无法发表评论)。