如何得到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()。但还是太慢了。有没有更好的算法可以快速求和?

您可以使用 numpyitertools:

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]