【问题标题】:Use mean, min, max and stddev to create 2D dataset使用 mean、min、max 和 stddev 创建 2D 数据集
【发布时间】:2021-12-24 03:52:09
【问题描述】:

我正在尝试创建一个具有特定最小值、最大值、平均值和标准差的二维数组。长话短说,我正在尝试同时使用两者

np.random.randint(min,max, size=(row,col)
np.random.normal(mu,sigma, size=(row,col) 

同时。有谁知道是否已经为此制作了一个功能?我有一个标准偏差匹配函数,但不幸的是它也改变了数组的最小值和最大值,这也可能是另一种方法。

【问题讨论】:

    标签: python numpy multidimensional-array statistics


    【解决方案1】:

    您可以使用边界从正态空间“转换”到均匀空间的均匀分布(使用error function),并使用逆误差函数将其转换为正态分布。

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy import special
    
    mean = 2
    std = 3
    min_value = 0
    max_value = 6
    
    min_in_standard_domain = (min_value - mean) / std  
    max_in_standard_domain = (max_value - mean) / std
    
    min_in_erf_domain = special.erf(min_in_standard_domain)
    max_in_erf_domain = special.erf(max_in_standard_domain)
    
    random_uniform_data = np.random.uniform(min_in_erf_domain, max_in_erf_domain, 10000)
    random_gaussianized_data = (special.erfinv(random_uniform_data) * std) + mean
    fig, axes = plt.subplots(1, 2, figsize=(12, 6))
    axes[0].hist(random_uniform_data, 30)
    axes[1].hist(random_gaussianized_data, 30)
    axes[0].set_title('uniform distribution samples')
    axes[1].set_title('erfinv(uniform distribution samples)')
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2013-04-26
      • 2019-03-07
      • 2015-09-21
      • 1970-01-01
      • 2016-09-12
      • 1970-01-01
      • 2010-12-10
      • 2021-12-01
      • 2017-08-06
      相关资源
      最近更新 更多