2014-11-17 4 views
1

Я ищу двухмерный аналог подпрограммы numpy.random.normal, то есть numpy.random.normal генерирует одномерный массив со средним стандартным отклонением и номером выборки в качестве входных данных, и то, что я ищу, - способ создания точек в двумерном пространстве с теми же входными параметрами.Генерировать двумерное нормальное распределение с учетом среднего и стандартного отклонения

Похоже, numpy.random.multivariate_normal может это сделать, но я не совсем понимаю, что такое параметр cov. Следующая выдержка описывает этот параметр более подробно и относится к scipy docs:

Ковариационная матрица распределения. Должен быть симметричным и положительно-полуопределенным для «физически значимых» результатов.

Позже на странице, в разделе примеров, значение выборки cov Дано:

cov = [[1,0],[0,100]] # diagonal covariance, points lie on x or y-axis 

Концепция еще довольно непрозрачная для меня, однако.

Если кто-то может уточнить, что должно быть cov или предложить другой способ создания точек в двумерном пространстве с учетом среднего и стандартного отклонения с использованием python, я был бы признателен.

ответ

2

Если вы передаете size=[1, 2] функции normal(), вы получите 2D-массив, который на самом деле то, что вы ищете:

>>> numpy.random.normal(size=[1, 2]) 
array([[-1.4734477 , -1.50257962]]) 
+0

Спасибо за ваш ответ. Как я могу использовать это для создания дистрибутива с, скажем, 500 точками? Похоже, это дает мне только одну пару x, y – Ryan

+0

Вы настраиваете размер '' [500, 2] '. Тем не менее, это зависит от вашего набора данных ... Может быть, лучше пойти с '[1, 1000]' или даже зацикливаться и генерировать каждый отдельно или что угодно;) – tamasgal

+0

Отлично, спасибо! – Ryan

Смежные вопросы