我有一套坐标装置(3D)和一组标准偏差(3D),如下所示:
means = [[x1, y1, z1],
[x2, y2, z2],
...
[xn, yn, zn]]
stds = [[sx1, sy1, sz1],
[sx2, sy2, sz2],
...
[sxn, syn, szn]]
所以问题是N x 3
我希望使用np.random.normal()随机生成1000个坐标样本集(N x 3 x 1000)。目前我使用for循环生成样本:
for i in range(0,1000):
samples = np.random.normal(means, stds)
但是我觉得我可以失去for循环并且让numpy更快地完成它并且在一次调用中,任何人都知道我应该如何编写它?
答案 0 :(得分:4)
或者使用size
参数:
import numpy as np
means = [ [0, 0, 0], [1, 1, 1] ]
std = [ [1, 1, 1], [1, 1, 1] ]
#100 samples
print(np.random.normal(means, std, size = (100, len(means), 3)))
答案 1 :(得分:0)
您可以重复means
和stds
阵列1000次,然后拨打np.random.normal()
一次。
means = [[0, 0, 0],
[1, 1, 1]]
stds = [[1, 1, 1],
[2, 2, 2]]
means = numpy.array(means) * numpy.ones(1000)[:, None, None]
stds = numpy.array(stds) * numpy.ones(1000)[:, None, None]
samples = numpy.random.normal(means, stds)