创建一个具有预设平均值和标准差的数组。

8
我试图使用Numpy创建一个具有预定均值和标准差的数组。该数组需要包含随机数。
到目前为止,我可以生成一个数组并计算其均值和标准差,但无法控制数组的值。
import numpy as np
x = np.random.randn(1000)
print("Average:")
mean = x.mean()
print(mean)
print("Standard deviation:")
std = x.std()
print(std)

如何通过均值和标准差控制数组的值?

“控制”数组是什么意思?你能具体解释一下吗? - Patrick
1
从一个具体的例子开始。您如何建议选择一个平均值为50,标准差为5的10个元素的单个数组?这样的集合有无限多个。 - Code-Apprentice
1
你确定需要正态分布吗? - bnaecker
1
你想要实现什么目标并不清楚。能否请您提供更多细节? - letimome
抱歉没有说清楚,我需要创建一个包含1000个随机浮点数的数组,但它的平均值应为0.025,标准差为0.025。 - EORS
显示剩余2条评论
3个回答

14

使用numpy.random.normal。如果你的平均值为my_mean,标准差为my_str

x = np.random.normal(loc=my_mean, scale=my_std, size=1000)

当使用以下代码时,答案是不正确的: np.random.normal(1.13, 0.339, 5) 数组数字与均值和标准差不对应。 - Megan

8

另一个解决方案是使用np.random.randn

my_std * np.random.randn(1000) + my_mean

例子:

my_std = 0.025
my_mean = 0.025

x = my_std * np.random.randn(1000) + my_mean
x.mean()
# 0.025493112966038879
x.std()
# 0.024464870590114995

使用相同的随机种子,这实际上会产生与numpy.random.normal完全相同的结果:

np.random.seed(42)
my_std * np.random.randn(5) + my_mean
# array([ 0.03741785,  0.02154339,  0.04119221,  0.06307575,  0.01914617])

np.random.seed(42)
np.random.normal(loc=my_mean, scale=my_std, size=5) #note the size here is 5 now
# array([ 0.03741785,  0.02154339,  0.04119221,  0.06307575,  0.01914617])

非常感谢您的帮助。 - EORS

1

既然您已经知道了平均值和标准偏差,那么您就有两个自由度。这意味着您可以为数组的除最后两个元素外的所有元素选择随机数。最后两个元素必须通过解决由平均值和标准偏差公式给出的方程组来计算。


3
我同意这个问题的表述非常不清晰,但是看起来提问者真正想要的是具有指定均值和标准差的高斯随机变量数组。 - P. Camilleri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接