gpt4 book ai didi

python - 用于从具有不同间隔的截断正态分布中采样的矢量化代码

转载 作者:太空狗 更新时间:2023-10-30 00:56:04 25 4
gpt4 key购买 nike

以下代码根据具有不同间隔的截断正态分布生成大小为 100 的样本。有什么有效的(矢量化的)方法可以做到这一点吗?

from scipy.stats import truncnorm
import numpy as np
sample=[]
a_s=np.random.uniform(0,1,size=100)
b_s=a_s+0.2
for i in range(100):
sample.append(truncnorm.rvs(a_s[i], b_s[i], size=100))
print sample

最佳答案

在不久的将来有一天,所有 NumPy/SciPy 函数都将广播它们的所有参数,您将能够执行 truncnorm.rvs(a_s, b_s, size=100),但由于我们还没有做到这一点,您可以从均匀分布和正态分布的 CDF 和 PPF 中手动生成随机样本:

import numpy as np
from scipy.stats import truncnorm, norm

a_s = np.random.uniform(0, 1, size=100)
b_s = a_s + 0.2

cdf_start = norm.cdf(a_s)
cdf_stop = norm.cdf(b_s)
cdf_samples = np.random.uniform(0, 1, size=(100, 100))
cdf_samples *= (cdf_stop - cdf_start)[:, None]
cdf_samples += cdf_start[:, None]
truncnorm_samples = norm.ppf(cdf_samples)

关于python - 用于从具有不同间隔的截断正态分布中采样的矢量化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22047786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com