có cách nào hiệu quả hơn để lấy giá trị trung bình của một mảng trong các thùng được chỉ định trước không? ví dụ: tôi có một mảng số và một mảng tương ứng với các vị trí bắt đầu và kết thúc của bin trong mảng đó và tôi muốn chỉ lấy giá trị trung bình trong các thùng đó? Tôi có mã thực hiện nó bên dưới nhưng tôi đang tự hỏi làm thế nào nó có thể được cắt giảm và cải thiện. cảm ơn.
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