如何避免错误小广场在计算大粒子阵列的逆累积分布函数时?

2024-05-15 02:35:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我可能在scipy或numpy中遇到了一个bug,有人看到过下面的问题或者有一个很好的解决方法吗?你知道吗

from scipy.stats import distributions
import numpy as np
distributions.norm.ppf(np.ones((30000, 10000)) / 2.0)

结果

array([[  0.,   0.,   0., ...,   0.,   0.,   0.],
       [  0.,   0.,   0., ...,   0.,   0.,   0.],
       [  0.,   0.,   0., ...,   0.,   0.,   0.],
       ..., 
       [ nan,  nan,  nan, ...,  nan,  nan,  nan],
       [ nan,  nan,  nan, ...,  nan,  nan,  nan],
       [ nan,  nan,  nan, ...,  nan,  nan,  nan]])

较小的运行(如20000行)工作良好。你知道吗

使用numpy 1.10.4。你知道吗

编辑

问题似乎更深,出现在numpy内部:

na = np.zeros((30000, 10000)) * np.nan
np.place(na, np.ones((30000, 10000)), np.ravel(np.ones((30000, 10000))))

导致

array([[  1.,   1.,   1., ...,   1.,   1.,   1.],
       [  1.,   1.,   1., ...,   1.,   1.,   1.],
       [  1.,   1.,   1., ...,   1.,   1.,   1.],
       ..., 
       [ nan,  nan,  nan, ...,  nan,  nan,  nan],
       [ nan,  nan,  nan, ...,  nan,  nan,  nan],
       [ nan,  nan,  nan, ...,  nan,  nan,  nan]])

添加了错误报告:https://github.com/numpy/numpy/issues/7207


Tags: 方法fromimportnumpynormasstatsnp
1条回答
网友
1楼 · 发布于 2024-05-15 02:35:59

问题似乎是在numpy/core/src/multiarray/compiled_base.c中的^{}函数中发生整数溢出。我已经打开了一个pull request来解决这个问题。你知道吗

相关问题 更多 >

    热门问题