我在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)
我得到了以下錯誤:
檔案"test2.py",行4,in <module>
truncnorm.rvs(0.0,1.0, size=10, random_state=rg)
檔案 "/opt/anaconda3/envs/newbase/lib/python3.8/site-packages/scipy/stats/_distn_infrastructure.py",行1004,in rvs
vals = self._rvs(*args, size=size, random_state=random_state)
檔案 "/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)
檔案 "/opt/anaconda3/envs/newbase/lib/python3.8/site-packages/scipy/stats/_continuous_distns.py", 行 7697, in _rvs_scalar
U = random_state.random_sample(N)
屬性錯誤(AttributeError)。'numpy.random._generator.Generator' object沒有屬性'random_sample'。
我正在使用numpy 1.19.1和scipy 1.5.0。這個問題在scipy.norm.rvs.中沒有發生。
uj5u.com熱心網友回復:
在scipy 1.7.1中,問題行已經被改為:
def _rvs_scalar(self, a, b, numsamples=None, random_state=None) 。
if not numsamples:
numsamples = 1
# preparation sampling of rvs
size1d = tuple(np.atleast_1d(numsamples) )
N = np.prod(size1d) # 需要的rvs數量,回傳后重塑。
# 計算一些rvs的數量0, high=1, size=N)
x = self._ppf(U, a, b)
rvs = np.reshape(x, size1d)
return rvs
兩者都有uniform,但是rg沒有random_sample:
在[221]: rg.uniform
Out[221]: <function Generator.uniform>
在[222]: np.random.uniform
Out[222]: <function RandomState.uniform>
np.random.random_sample有這樣的說明:
...注意:。
新的代碼應該使用`default_rng()`的`random`方法來代替。
實體代替;請看 :ref:`random-quick-start`.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/309463.html
標籤:
