[英]Summing sub-lists of lists into a new list
有一个列表,其中每个元素都是一对粒子属性。 想要将这些对的值组合到一个新列表中。 如果每对是一个单独的列表但不完全确定它们是否独立于另一个列表中,请知道如何执行此操作。
list = [[[846.0, -0.0431, -0.16, -846.0], [1270.0, -0.14, -0.174, 1270.0]], [[846.0, -0.0431, -0.16, -846.0], [35.0, 0.296, 0.205, 34.9]]]
等等 output 与
list2 = [[2116, -0.1831, -0.334, 424], [881.0, 0.259, -0.045, -811]]
lst = [[[846.0, -0.0431, -0.16, -846.0], [1270.0, -0.14, -0.174, 1270.0]],
[[846.0, -0.0431, -0.16, -846.0], [35.0, 0.296, 0.205, 34.9]]]
result = [[sum(e) for e in zip(*l)] for l in lst]
print(result)
Output
[[2116.0, -0.1831, -0.33399999999999996, 424.0], [881.0, 0.2529, 0.044999999999999984, -811.1]]
那个部分:
zip(*l)
转换(例如):
[[846.0, -0.0431, -0.16, -846.0], [1270.0, -0.14, -0.174, 1270.0]]
变成这样的东西:
[(846.0, 1270.0), (-0.0431, -0.14), (-0.16, -0.174), (-846.0, 1270.0)]
然后sum(e)
只是对这些对求和。
1 行中包含 numpy:
import numpy as np
original_list = np.array(
[[[846.0, -0.0431, -0.16, -846.0], [1270.0, -0.14, -0.174, 1270.0]],
[[846.0, -0.0431, -0.16, -846.0], [35.0, 0.296, 0.205, 34.9]]]
)
summed_list = np.array([np.sum(i, axis=0) for i in original_list])
我觉得应该是最短的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.