Adding two tuples elementwise(逐元素添加两个元组)
问题描述
我只是想知道是否有一种特别的 Pythonic 方法可以按元素添加两个元组?
I was just wondering if there was an especially pythonic way of adding two tuples elementwise?
到目前为止(a 和 b 是元组),我有
So far (a and b are tuples), I have
map(sum, zip(a, b))
我的预期输出是:
(a[0] + b[0], a[1] + b[1], ...)
可能的称重是给 a 0.5 的重量和 b 0.5 的重量,等等.(我正在尝试采用加权平均值).
And a possible weighing would be to give a 0.5 weight and b 0.5 weight, or so on. (I'm trying to take a weighted average).
这很好用,但是说我想添加权重,我不太确定该怎么做.
Which works fine, but say I wanted to add a weighting, I'm not quite sure how I would do that.
谢谢
推荐答案
压缩它们,然后对每个元组求和.
Zip them, then sum each tuple.
[sum(x) for x in zip(a,b)]
这是一个更好但更复杂的版本,它允许加权.
EDIT : Here's a better, albeit more complex version that allows for weighting.
from itertools import starmap, islice, izip
a = [1, 2, 3]
b = [3, 4, 5]
w = [0.5, 1.5] # weights => a*0.5 + b*1.5
products = [m for m in starmap(lambda i,j:i*j, [y for x in zip(a,b) for y in zip(x,w)])]
sums = [sum(x) for x in izip(*[islice(products, i, None, 2) for i in range(2)])]
print sums # should be [5.0, 7.0, 9.0]
这篇关于逐元素添加两个元组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:逐元素添加两个元组
基础教程推荐
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 筛选NumPy数组 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01