2012-03-20 116 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)