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

2024-04-29 06:21:26 发布

您现在位置: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