Gibt es eine effizientere Möglichkeit, einen Durchschnitt eines Arrays in vorgegebenen Behältern zu ermitteln? Zum Beispiel habe ich ein Array von Zahlen und ein Array, das den Start- und Endpositionen der Bins in diesem Array entspricht, und ich möchte nur den Mittelwert in diesen Bins nehmen. Ich habe Code, der es unten tut, aber ich frage mich, wie es reduziert und verbessert werden kann. Vielen Dank.
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