Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Numpy生成随机相关的x和y点_Python_Random_Numpy_Correlation_Normal Distribution - Fatal编程技术网

Python 使用Numpy生成随机相关的x和y点

Python 使用Numpy生成随机相关的x和y点,python,random,numpy,correlation,normal-distribution,Python,Random,Numpy,Correlation,Normal Distribution,我想生成x和y坐标的相关数组,以测试各种matplotlib绘图方法,但我在某些方面失败了,因为我无法获得numpy.random.multivariable\u normal来提供我想要的样本。理想情况下,我希望x值介于-0.51和51.2之间,y值介于0.33和51.6之间(尽管我认为相等的范围是可以的,因为我可以在之后约束绘图),但我不确定这是什么意思(0,0?)我应该使用协方差值从函数中获取这些样本。顾名思义,numpy.random.multivariable\u normal生成正态

我想生成x和y坐标的相关数组,以测试各种matplotlib绘图方法,但我在某些方面失败了,因为我无法获得
numpy.random.multivariable\u normal
来提供我想要的样本。理想情况下,我希望x值介于-0.51和51.2之间,y值介于0.33和51.6之间(尽管我认为相等的范围是可以的,因为我可以在之后约束绘图),但我不确定这是什么意思(0,0?)我应该使用协方差值从函数中获取这些样本。

顾名思义,
numpy.random.multivariable\u normal
生成正态分布,这意味着在任何给定的区间之外找到点的概率是非零的。您可以生成相关的均匀分布,但这有点复杂。请看两种可能的方法

如果您想使用正态分布,您可以设置SIGMA,使您的半间隔对应于3个标准偏差(如果需要,您还可以过滤掉坏点)。通过这种方式,您将在您的时间间隔内获得约99%的积分,例如:

import numpy as np
from matplotlib.pyplot import scatter

xx = np.array([-0.51, 51.2])
yy = np.array([0.33, 51.6])
means = [xx.mean(), yy.mean()]  
stds = [xx.std() / 3, yy.std() / 3]
corr = 0.8         # correlation
covs = [[stds[0]**2          , stds[0]*stds[1]*corr], 
        [stds[0]*stds[1]*corr,           stds[1]**2]] 

m = np.random.multivariate_normal(means, covs, 1000).T
scatter(m[0], m[1])

是否可以实施一个变体,以便从具有自身平均值和stdev的现有numpy数组中创建相关变量(即numpy数组)?