似乎如果它是相同的分发,从numpy.random绘制随机样本比从scipy.stats .-.rvs更快.我想知道两者之间的速度差异是什么?
解决方法
scipy.stats.uniform实际上使用numpy,这里是stats中的相应函数(mtrand是numpy.random的别名)
class uniform_gen(rv_continuous): def _rvs(self): return mtrand.uniform(0.0,1.0,self._size)
scipy.stats有一个错误检查的开销,使界面更加灵活.只要您不为每个绘图的循环调用uniform.rvs,速度差应该是最小的.你可以一次得到所有的随机抽奖,例如(1000万)
>>> rvs = stats.uniform.rvs(size=(10000,1000)) >>> rvs.shape (10000,1000)
这是我刚才写的长的答案:
scipy / numpy中的基本随机数由…创建
Mersenne-Twister PRNG in numpy.random.随机数
在numpy.random中的分布是在cython / pyrex和相当快.
scipy.stats没有随机数生成器,随机数是
以三种方式获得:
>直接从numpy.random,例如正常,t,…相当快>通过转换其他随机数的随机数可用于numpy.random,也很快,因为这样操作整个数组通用:唯一的通用代生成随机数生成使用ppf(逆cdf)来转换均匀随机数.这是相对较快的,如果有一个明确的表达式ppf,但是如果必须计算ppf,可能非常慢间接的影响.例如,如果只定义了pdf,那么cdf是通过数值积分获得,ppf是通过获得的方程求解器.所以几个发行版很慢.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。