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

urs*_*rei 16 python random numpy normal-distribution correlation

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

ely*_*ase 28

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

如果你想使用正态分布,你可以设置sigmas,使你的半间隔对应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])
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 是否可以实现一种变体,以便从具有自己的平均值和标准偏差的现有 numpy 数组创建相关变量(即 numpy 数组)? (2认同)