从本质上说,我正在生成一个元组:
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)
(虽然有几个订单,但排列更多。)
我想做的是对每个元组/可迭代进行求和,例如((2, 5, 9, 11), (2, 5, 9, 12), (2, 5, 7, 10), (2, 5, 7, 11))
-> (8,20,32,44)
(我实际上想要做的是,得到聚合元组和预定义的元组之间的区别,比如(50,50,50,50,50,50,50,50,50,50,50) -> (32,30,18,6),最后,将差异之和确定哪一个元组的元组最大化/最小化了这个聚合差异。)
如何对元组执行此数学运算,并有效地将结果映射到原始元组?
发布于 2019-12-03 03:37:11
前提条件:
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 (可能在长迭代时效率较低):
sum_of_all_tuples = tuple(map(sum, zip(*iterable_of_tuples))))
https://stackoverflow.com/questions/59149660
复制相似问题