Я хотел бы вернуть массив или индекс того, который содержит, какие комбинации элементов в массиве numpy суммируют с определенным числом.
Например, если я возьму этот массив и захочунайти все комбинации его членов, которые в сумме равны 7:
import numpy as np
example = np.arange(4) + 1
example
>>> array([1, 2, 3, 4])
он вернет:
somefunction
>>> [[1,2,4], [3,4]]
или индекс:
>>> [[0,1,2], [2,3]]
Я могу представить себеподход с использованием itertools.combinations
, хотя я бы хотел избежать этого, потому что набор данных, на котором я пытаюсь использовать это, уже имеет ~ 30 000 членов.Он не работает достаточно быстро при рассмотрении каждой длины комбинаций.
Есть ли более быстрый способ сделать это?
edit: Для получения дополнительной информации мне не обязательно использовать каждую комбинацию30000 членов.Например, я суммирую целые числа до ~ 1000, поэтому мне нужно <1000 составляющих - в моем случае конечное число составляющих списка, вероятно, будет состоять из 100-400 составляющих. </p>