This question already has answers here:
How to specify upper and lower limits when using numpy.random.normal
(5个答案)
9个月前关闭。
从事机器学习任务。我们应该得到一组带约束的随机w.r.t正态分布。我们可以使用
如何使用它?
使用以下参数对生成器进行实例化:平均值,标准偏差和截断范围:
然后,您可以使用X生成一个值:
或者,一个具有N个生成值的numpy数组:
视觉示例
这是三个不同的截断正态分布的图:
(5个答案)
9个月前关闭。
从事机器学习任务。我们应该得到一组带约束的随机w.r.t正态分布。我们可以使用
np.random.normal()
获得正态分布号,但它不提供任何绑定(bind)参数。我想知道怎么做吗? 最佳答案
truncnorm
的参数化是,因此这是一个将参数化转换为更直观的函数:
from scipy.stats import truncnorm
def get_truncated_normal(mean=0, sd=1, low=0, upp=10):
return truncnorm(
(low - mean) / sd, (upp - mean) / sd, loc=mean, scale=sd)
如何使用它?
>>> X = get_truncated_normal(mean=8, sd=2, low=1, upp=10)
>>> X.rvs()
6.0491227353928894
>>> X.rvs(10)
array([ 7.70231607, 6.7005871 , 7.15203887, 6.06768994, 7.25153472,
5.41384242, 7.75200702, 5.5725888 , 7.38512757, 7.47567455])
视觉示例
这是三个不同的截断正态分布的图:
X1 = get_truncated_normal(mean=2, sd=1, low=1, upp=10)
X2 = get_truncated_normal(mean=5.5, sd=1, low=1, upp=10)
X3 = get_truncated_normal(mean=8, sd=1, low=1, upp=10)
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, sharex=True)
ax[0].hist(X1.rvs(10000), normed=True)
ax[1].hist(X2.rvs(10000), normed=True)
ax[2].hist(X3.rvs(10000), normed=True)
plt.show()
关于python - 如何获得numpy范围内的正态分布? [复制],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36894191/
10-12 14:01