python 数据分箱_用scipy / numpy在python中分箱数据

  • Post author:
  • Post category:python


用scipy / numpy在python中分箱数据

是否有更有效的方法在预先指定的箱中取平均数组? 例如,我有一个数字数组和一个对应于该数组中bin开始和结束位置的数组,我想在这些数据库中取平均值? 我有下面的代码,但我想知道如何减少和改进它。 谢谢。

from scipy import *

from numpy import *

def get_bin_mean(a, b_start, b_end):

ind_upper = nonzero(a >= b_start)[0]

a_upper = a[ind_upper]

a_range = a_upper[nonzero(a_upper < b_end)[0]]

mean_val = mean(a_range)

return mean_val

data = rand(100)

bins = linspace(0, 1, 10)

binned_data = []

n = 0

for n in range(0, len(bins)-1):

b_start = bins[n]

b_end = bins[n+1]

binned_data.append(get_bin_mean(data, b_start, b_end))

print binned_data

6个解决方案

146 votes

它可能更快更容易使用numpy.histogram():

import numpy

data = numpy.random.random(100)

bins = numpy.linspace(0, 1, 10)

digitized