Python - Как создать гауссовский случайный вектор с использованием Scipy.Stats.Multivariate_Normal - PullRequest
0 голосов
/ 14 октября 2018

Я хочу сделать то же самое, что и

x = np.random.multivariate_normal(mean, cov, (n, 1))

, где среднее - это вектор с длиной n, а cov - квадратная матрица nxn, но вместо этого вместо scipy.stats.multivariate_normal

1 Ответ

0 голосов
/ 14 октября 2018

Для выборки из распределения в scipy.stats используйте метод .rvs.

Пример:

>>> from scipy import stats
>>> 
>>> n = 3
>>> mn = np.random.random(n)
>>> cov = np.random.random((2*n, n)) - 0.5
>>> cov = cov.T@cov
>>> 
>>> frzn = stats.multivariate_normal(mn, cov)
>>> frzn
<scipy.stats._multivariate.multivariate_normal_frozen object at 0x7f156ea782b0>
>>> frzn.rvs(n)
array([[ 1.38391348,  0.65518546, -0.79541539],
       [ 0.36422157, -0.49308578,  0.94995824],
       [-0.73152442, -0.06003768, -0.28373662]])
...