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

发布于 2021-01-29 17:21:02

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

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    顾名思义,它会numpy.random.multivariate_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])
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看