numpy - 如何让 scipy.stats.truncnorm.rvs 使用 numpy.random.default_rng()?
问题描述
我在 scipy.stats.truncnorm 中遇到了 random_state 的问题。这是我的代码:
from scipy.stats import truncnorm
from numpy.random import default_rng
rg = default_rng( 12345 )
truncnorm.rvs(0.0,1.0,size=10, random_state=rg)
我收到以下错误:
File "test2.py", line 4, in <module>
truncnorm.rvs(0.0,1.0,size=10, random_state=rg)
File "/opt/anaconda3/envs/newbase/lib/python3.8/site-packages/scipy/stats/_distn_infrastructure.py", line 1004, in rvs
vals = self._rvs(*args, size=size, random_state=random_state)
File "/opt/anaconda3/envs/newbase/lib/python3.8/site-packages/scipy/stats/_continuous_distns.py", line 7641, in _rvs
out = self._rvs_scalar(a.item(), b.item(), size, random_state=random_state)
File "/opt/anaconda3/envs/newbase/lib/python3.8/site-packages/scipy/stats/_continuous_distns.py", line 7697, in _rvs_scalar
U = random_state.random_sample(N)
AttributeError: 'numpy.random._generator.Generator' object has no attribute 'random_sample'
我正在使用 numpy 1.19.1 和 scipy 1.5.0。scipy.norm.rvs 不会出现此问题。
解决方案
在 scipy 1.7.1 中,问题行已更改为:
def _rvs_scalar(self, a, b, numsamples=None, random_state=None):
if not numsamples:
numsamples = 1
# prepare sampling of rvs
size1d = tuple(np.atleast_1d(numsamples))
N = np.prod(size1d) # number of rvs needed, reshape upon return
# Calculate some rvs
U = random_state.uniform(low=0, high=1, size=N)
x = self._ppf(U, a, b)
rvs = np.reshape(x, size1d)
return rvs
两者都有uniform
,但rg
没有random_sample
:
In [221]: rg.uniform
Out[221]: <function Generator.uniform>
In [222]: np.random.uniform
Out[222]: <function RandomState.uniform>
np.random.random_sample
有这个注释:
.. note::
New code should use the ``random`` method of a ``default_rng()``
instance instead; please see the :ref:`random-quick-start`.
推荐阅读
- django - 此字段必须是 Django Rest Framework 中 OnetoOneField 中邮递员中的唯一错误
- reactjs - 如何从功能库中的 api 设置状态?
- java - javax.crypto.BadPaddingException:解密错误并且消息大于模数
- ssh - 如何将我本地机器上的 google colab 连接到远程 ubuntu 服务器?
- c# - 我有一个 aspx 页面,每次更改时都有多个单选按钮和复选框我调用 ajax 将数据保存到数据库,但它正在创建性能问题
- oracle - 值未从 PLSQL 中的字符串中的变量传递
- reactjs - Material UI 响应式设计:三元代码重复,如何改进?
- kubernetes - 使用 ansible 添加 kubernetes 工作节点,但它没有加入
- mongodb - Mongodb聚合项目$filter $ne在spring boot中失败
- fltk - 删除 FLTK 菜单选项下的下划线