如何在Python中获得数组中所有组合的乘积之和?

如何在Python中获得数组中所有组合的乘积之和?,python,arrays,numpy,sum,product,Python,Arrays,Numpy,Sum,Product,我正在使用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 linspac

我正在使用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]

那么1*3、2*4和1*2*4的组合呢?此外,如果你不显示你的“慢”代码,我们如何判断我们的想法是否更快?@hpaulj不是一个示例,真实代码,仅供参考。