小编Nea*_*JMD的帖子

对于相关分布采样,是否有 scipy _norm_pdf 的快速替代方案?

我已经为蒙特卡罗模拟拟合了一系列 SciPy 连续分布,并且希望从这些分布中获取大量样本。但是,我希望能够获取相关样本,以便第ith 个样本从每个分布中获取例如第 90 个百分位数。

在这样做时,我发现了 SciPy 性能的一个怪癖:

# very fast way to many uncorrelated samples of length n
for shape, loc, scale, in distro_props:
    sp.stats.norm.rvs(*shape, loc=loc, scale=scale, size=n)

# verrrrryyyyy slow way to take correlated samples of length n
correlate = np.random.uniform(size=n)
for shape, loc, scale, in distro_props:
    sp.stats.norm.ppf(correlate, *shape, loc=loc, scale=scale)
Run Code Online (Sandbox Code Playgroud)

大多数关于此的结果都声称这些 SciPy 发行版的缓慢,如果来自类型检查等包装。但是,当我分析代码时,大部分时间都花在了底层数学函数[_continuous_distns.py:179(_norm_pdf)]1 上。此外,它与 缩放n,这意味着它在内部循环遍历每个元素。

rv_continuous 上的 SciPy文档几乎似乎暗示子类应该为了性能而覆盖它,但我会猴子补丁到 SciPy 以加速他们的 ppf 似乎很奇怪。我只是根据 ppf 公式计算法线,但我也使用对数正态和偏斜正态,这更难实现。

那么,在 Python …

python numpy distribution montecarlo scipy

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

在Java中全局访问命令行参数的最佳实践

存储从命令行传递给Java程序的全局设置的最佳方法是什么?例如,如果您要运行,>Java myProgram -verbose我希望能够知道是否在所有私有函数中指定了详细信息.为每个函数添加五个或十个参数只是为了传递必要的变量是错误的,但我也一直在阅读Java中的全局变量是魔鬼的工作,即使它们只设置一次.这一定是一个非常普遍的问题,但我找不到任何可以解释最佳处理方法的东西,如果有人能指出我正确的方向,我会很感激.

java oop global-variables command-line-arguments

2
推荐指数
1
解决办法
1833
查看次数