根据numpy直方图返回的bin将数组拆分为数据

时间:2018-12-17 21:24:53

标签: python histogram frequency bins

我有一个数组x,其数据如下:[3.1、3.0、3.3、3.5、3.8、3.75、4.0]等。 我还有另一个变量y,具有相应的0和1 [0,1,0] 我想从这些新的单独的数组中进行划分

freq, bins = np.histogram(X, 5)

这使我知道每个垃圾箱的临界值。但是我实际上如何获取这些数据?例如,如果我有两个垃圾箱(3到3.5和3.5到4),我想让两个得到两个数组作为回报[3.1,3.2,3.4,...]和[3.6,3.7,4,... ]。另外,我希望变量y被破坏并以相同的方式排序。

摘要:我正在寻找将x分解为具有相应y值的垃圾箱的代码。

我曾考虑过使用bins变量来做一些事情,但是我不确定如何根据临界值分割数据。感谢您的帮助。

如果我绘制X的正常直方图,我将得到:enter image description here

使用代码:

d=plt.hist(X, 5, facecolor='blue', alpha=0.5)

工作代码:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)


def getLists(a, b, bin_obj):
    index_list = []
    for left, right in pairwise(bin_obj):
        indices = np.where((a >= left) & (a < right))
        index_list += [indices[0]]
    X_ret = [a[i] for i in index_list]
    Y_ret = [b[i] for i in index_list]
    return (X_ret, Y_ret)
freq, bins = np.histogram(X[:, 0], 5)

Xnew, Ynew = getLists(X[:, 0], Y, bins)

1 个答案:

答案 0 :(得分:2)

标准库中有少量的python函数defined

import { BsDatepickerModule } from 'ngx-bootstrap';

@NgModule({
imports: [
    .....
    BsDatepickerModule.forRoot(),
    .....
  ],
exports: [
    .....
    BsDatepickerModule,
    .....
   ]
})

它可以帮助您遍历回收箱并获取元素的索引。

import { BsDatepickerModule } from 'ngx-bootstrap';

@NgModule({
imports: [
    .....
    BsDatepickerModule.forRoot(),
    .....
  ]