首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy histogram2d数据的中值计算

numpy histogram2d数据的中值计算
EN

Stack Overflow用户
提问于 2017-05-16 03:55:21
回答 1查看 474关注 0票数 1

我有一些我在x和y中存储的数据。然后我将x桶中的数据规范化,这样xbins中的所有数据就等于1.因此,在每个x处,y的每个值都有一个归一化概率。

代码语言:javascript
复制
    nA, binsx, binsy = np.histogram2d(dataA,dataB,
                                      bins=[binsA,binsB],normed=False)

    H = np.ma.masked_where(nA==0.0, nA)
    for i in range(len(H[0,:])):     # Column index i, over len of row 0
        colTot = np.sum(H[:,i])
        for j in range(len(H[:,0])): # Row index j, over len of column 0
            H[j,i] = H[j,i]/colTot

在这一点上,H沿列被标准化..。每个总数为1。

我的问题是,如何有效地在每一列中生成中值?我认为我需要为每个列(或xbin中的一组值)生成一个新数组,该数组的y值数量等于该ybin的原始(nA)计数。似乎很复杂..。有更简单的方法吗?

我现在想做的是:

代码语言:javascript
复制
nA, binsx, binsy = np.histogram2d(dataA,dataB,
                                  bins=[binsA,binsB],normed=False)
for j in range(nA[0,:].size): # Loop over number of columns
    oneMass = np.array([])
    for i in range(nA[:,0].size): # loop over rows in y...
        tmp = np.repeat(binsA[i],np.int32(nA[i,j]))
        if  tmp.size > 0:
            oneMass = np.concatenate((oneMass,tmp) )

    print('Median',np.median(oneMass))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-16 06:57:39

如果您已经标准化了这些列,就可以通过累积概率函数对.5进行线性插值:

代码语言:javascript
复制
cumCols = np.cumsum(H, axis = 1)
medians = np.array([np.interp(.5, binsA, cumCols[:,i]) for i in range(len(binsA))])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43992223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档