使用for循环在许多标准偏差中在Python中创建正态分布

时间:2018-04-02 16:28:05

标签: python arrays python-3.x list standard-deviation

我试图根据正态分布创建一个由随机值组成的数组列表,每个数组的正态分布具有不同的标准偏差。我应该拥有的是在第一个数组中所有正态分布值都应该有0.01的标准偏差,在第二个数组中所有应该具有0.02的标准差,依此类推至1.我的代码如下所示:

noise_stdv = np.linspace(0.01, 1, 100)
for i in noise_stdv:
   noise1 = [np.random.normal(0, noise_stdv, 100) for i in range(100)]

但是这会创建一个列表,使得每个数组中的第一个元素的标准偏差为0.01,第二个元素的标准差为0.02,依此类推,而不是标准偏差为0.01的整个第一个元素等。 / p>

如何使for循环运行并为noise_stdv中的每个元素创建一个数组,而不是为每个数组中的每个元素运行?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

您反复覆盖相同的变量,并将标准差的向量而不是单个向量传递给每次迭代。只做列表理解一次:

noise_stdv = np.linspace(0.01, 1, 100)
noises = [np.random.normal(0, std, 100) for std in noise_stdv]