У меня есть два массива numpy X
и W
каждый с формой (N,N)
, которая возникает из-за конца вычисления. Разбить диапазон X
равными интервалами [min(X), min(X)+delta, min(X)+2*delta,..., max(X)]
. Я хотел бы знать, учитывая интервал отправную точку v
, сумма соответствующих W
значений (т. Е весь спектр X
)Условная сумма над матрицами в python/numpy
idx = (X>=v) & (X<(v+delta))
W[idx].sum()
Мне нужна эта сумма для всех стартовых интервалов, и мне нужно сделайте это для многих разных матриц X
и W
. Профилирование определило, что это узкое место. То, что я сейчас делаю, составляет:
W_total = []
for v0, v1 in zip(X, X[1:]):
idx = (X>=x0) & (X<x1)
W_total.append(W[idx].sum())
Как я могу ускорить это?