如何得到Python数组中所有组合的乘积之和?
How to get sum of products of all combinations in an array in Python?
我正在使用 Python 并且
我得到了一个像 a = [1, 2, 3, 4]
这样的数组
我想找到所有可能的组合乘法的总和,例如:
对于 1 的组合:1 + 2 + 3 + 4
对于 2 的组合:1*2 + 2*3 + 3*4 + 4*1
。
对于 3 的组合:1*2*3 + 1*3*4 + 2*3*4
对于 4 的组合:1*2*3*4
最后所有这些总和就是我的答案。我正在使用 numpy.prod()
和 numpy.sum()
。但还是太慢了。有没有更好的算法可以快速求和?
您可以使用 numpy
和 itertools
:
from numpy import linspace, prod
from itertools import combinations
arr = np.array([1,2,3,4])
[sum([prod(x) for x in combinations(arr,int(i))]) for i in linspace(1,len(arr), len(arr))]
[10, 35, 50, 24]
我正在使用 Python 并且
我得到了一个像 a = [1, 2, 3, 4]
这样的数组
我想找到所有可能的组合乘法的总和,例如:
对于 1 的组合:1 + 2 + 3 + 4
对于 2 的组合:1*2 + 2*3 + 3*4 + 4*1
。
对于 3 的组合:1*2*3 + 1*3*4 + 2*3*4
对于 4 的组合:1*2*3*4
最后所有这些总和就是我的答案。我正在使用 numpy.prod()
和 numpy.sum()
。但还是太慢了。有没有更好的算法可以快速求和?
您可以使用 numpy
和 itertools
:
from numpy import linspace, prod
from itertools import combinations
arr = np.array([1,2,3,4])
[sum([prod(x) for x in combinations(arr,int(i))]) for i in linspace(1,len(arr), len(arr))]
[10, 35, 50, 24]