2012-03-20 118 views
0

我有两个numpy阵列XW,每个形状(N,N)由计算结束的结果。将X的范围细分为相等的时间间隔[min(X), min(X)+delta, min(X)+2*delta,..., max(X)]。我想知道,给定的时间间隔的起点v,总相应W值:(即X的整个范围)蟒蛇/ numpy矩阵的条件求和

idx = (X>=v) & (X<(v+delta)) 
W[idx].sum() 

我需要这个总和为所有的起始区间和我需要为许多不同的矩阵做这个XW。剖析确定这是瓶颈。我现在在做的事情包括:

W_total = [] 
for v0, v1 in zip(X, X[1:]): 
    idx = (X>=x0) & (X<x1) 
    W_total.append(W[idx].sum()) 

我该如何加快速度?

回答

1

您可以使用numpy.histogram()来计算单个操作所有这些款项:

sums, bins = numpy.histogram(
    X, bins=numpy.arange(X.min(), X.max(), delta), weights=W) 
1

你试过numpy.histogram?

nbins = (X.max() - X.min())/delta 
W_total = np.histogram(X, weights=W, bins=nbins)