Python 在一个元组内的元组之间求和最有效的方法是什么?
本质上,我是在生成一个元组的元组:Python 在一个元组内的元组之间求和最有效的方法是什么?,python,performance,tuples,itertools,Python,Performance,Tuples,Itertools,本质上,我是在生成一个元组的元组: import datetime import csv from itertools import product, combinations, chain part_1 = { 'a':{2,1,0}, 'b':{3,4,5}, 'c':{7,8,9}, 'd':{10,11,12} } sorted_part_1 = sorted(part_1) result = product(*(part_1[Thing
import datetime
import csv
from itertools import product, combinations, chain
part_1 = {
'a':{2,1,0},
'b':{3,4,5},
'c':{7,8,9},
'd':{10,11,12}
}
sorted_part_1 = sorted(part_1)
result = product(*(part_1[Thing] for Thing in sorted_part_1))
# for a in result:
# print('comb a' + str(a))
comb_list_total = it.combinations(result,4)
(尽管有多个排列顺序。)
我想做的是对每个元组/iterable求和,例如((2,5,9,11),(2,5,9,12),(2,5,7,10),(2,5,7,11))
-->-->(8,20,32,44)
(我真正想做的是得到聚合元组和预定义元组之间的差异,比如,(50,50,50,50)->(32,30,18,6),最后,求和该差异以确定哪个元组最大化/最小化聚合差异。)
如何对元组执行此数学运算,并有效地将结果映射到原始元组?先决条件:
iterable_of_tuples = [
(...), # tuple 1
(...), # tuple 2
...
(...) # tuple N
]
使用numpy:
import numpy as np
sum_of_all_tuples = tuple(sum(np.array(t) for t in iterable_of_tuples))
纯Python(在长可重用项上可能效率较低):
你介意使用pandas/numpy吗?因为你求和的元组是组合生成的,所以我会寻找一种数学方法来简化求和,而不必显式地计算它。如果我们能够计算出
乘积
中的每个组合应该出现在结果中的次数,那么我们可以用乘法代替加法;同样地,如果我们可以计算出第1部分中的每个数字在总和中出现的次数。
sum_of_all_tuples = tuple(map(sum, zip(*iterable_of_tuples))))