我想要一个NxM
矩阵,其中每行中的数字是从不同正态分布生成的随机样本(相同mean
但标准差不同)。以下代码有效:
import numpy as np
mean = 0.0 # same mean
stds = [1.0, 2.0, 3.0] # different stds
matrix = np.random.random((3,10))
for i,std in enumerate(stds):
matrix[i] = np.random.normal(mean, std, matrix.shape[1])
然而,这段代码并不是很有效,因为有一个for
涉及循环。有没有更快的方法来做到这一点?
np.random.normal()被矢量化 https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.normal.html;您可以切换轴并转置结果:
np.random.seed(444)
arr = np.random.normal(loc=0., scale=[1., 2., 3.], size=(1000, 3)).T
print(arr.mean(axis=1))
# [-0.06678394 -0.12606733 -0.04992722]
print(arr.std(axis=1))
# [0.99080274 2.03563299 3.01426507]
那就是scale
参数是逐列标准差,因此需要通过转置.T
因为您需要按行输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)