【问题标题】:Easier way to transform array into a distribution?将数组转换为分布的更简单方法?
【发布时间】:2020-05-17 22:56:17
【问题描述】:

我有一个数组,vox_betas,它包含 21600 个浮点数(范围从 ~0 到 ~2),当按数组排序时,特征,你可以看到数据有一个结构(见第一张图片)。

我想要一个反映这种结构的数组——本质上我想调用 sns.distplot() 并让它产生与第一张图片相同的图。现在 sns.distplot(vox_betas) 描绘了第二张图片,这不是我想要的。

我可以通过创建数组 dist 在第三张图片中完成此操作,但我完成此操作的方式很草率,甚至丢失了一些信息(我的代码如下)。

如何将 vox_betas 和 features 转换为 dist?有人有什么想法吗?

plt.scatter(features,vox_betas)

sns.distplot(vox_betas)

dist=[]
for f in np.unique(features):
    dist = np.concatenate((dist,
                np.repeat(f,
                np.sum(
                [vox_betas[j]*10 for j in np.where(features==f)[0]]))))

sns.distplot(dist)

【问题讨论】:

    标签: python seaborn probability distribution


    【解决方案1】:

    这叫inverse transform sampling

    是伪随机数采样的基本方法,即对于 从任何概率分布中随机生成样本数 鉴于其cumulative distribution function

    我找到的最好的解释是this one。还讨论了here

    【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2014-11-23
    • 2010-09-17
    • 2021-11-17
    • 2023-03-14
    • 2011-10-03
    • 2019-11-16
    • 1970-01-01
    相关资源
    最近更新 更多