2

私は一連の座標平均 (3D) と一連の標準偏差 (3D) を次のように付随させています。

means = [[x1, y1, z1],
         [x2, y2, z2],
         ...
         [xn, yn, zn]]

stds = [[sx1, sy1, sz1],
        [sx2, sy2, sz2],
         ...
        [sxn, syn, szn]]

問題はN×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にそれをより速く実行させ、1回の呼び出しでそれをコーディングする方法を知っている人はいますか?

4

2 に答える 2

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)))
于 2017-05-23T10:35:04.350 に答える
0

means配列とstds配列を 1000 回繰り返してから、 np.random.normal()1 回呼び出すことができます。

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)
于 2017-05-23T10:34:34.643 に答える