Я хочу разбить длинный вектор на более мелкие неравные части, сделать суммирование для каждой части и собрать результаты в новый вектор.
Мне нужно сделать это в pytorch, но мне также интересно посмотреть, как это делается с помощью numpy.
Этого легко добиться, разделив вектор.
sizes = [3, 7, 5, 9]
X = torch.ones(sum(sizes))
Y = torch.tensor([s.sum() for s in torch.split(X, sizes)])
или с np.ones и np.split.
Есть ли более эффективный способ сделать это?
Edit:
Вдохновлен первым комментарием:
indices = np.cumsum([0]+sizes)[:-1]
Y = np.add.reduceat(X, indices.tolist())
решает это за NumPy. Я все еще ищу решение с pytorch.