如何在Python中获得数组中所有组合的乘积之和?
我正在使用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
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不是一个示例,真实代码,仅供参考。