计算加权和 [英] computing a weighted sum

查看:68
本文介绍了计算加权和的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有一个n浮点数列表x和一个n浮点数列表w我想要

来计算x [0] * w [0] + .. + x [n-1 ] * w [n-1]。


是否有一些优雅的表达式(可能使用lambda)在一个语句中完成

?如:

y = lambda x,w:...


我问,因为我现在正在这样做:

y = 0

for i in range(0,n):y + = x [i] * w [i]


似乎没有非常pythonic :)


谢谢,

Andrei

解决方案

< blockquote> an*****@mail.dntis.ro 写道:

假设我有一个n浮点数列表x和一个n浮点数列表w我想要
来计算x [0] * w [0] + .. + x [n-1] * w [n-1] 。

是否有一些优雅的表达(也许使用lambda)在一个声明中完成它?如下:
y = lambda x,w:...

我问,因为我现在这样做的方式:
y = 0
我在范围(0,n):y + = x [i] * w [i]

看起来不是非常pythonic:)



我'我会抓住它!


在Python 2.3中

sum([_x * _w表示_x,_w in zip(x, w)])


或2.4

总和(_x * _w代表_x,_w代表zip(x,w))


如果列表很大,您可能需要使用itertools.izip代替zip。


将McGugan


写道:

假设我有一个n浮点数列表x和一个n浮点数列表w我想要
来计算x [0] * w [0] + .. + x [n-1] * w [n-1]。

是否有一些优雅的表达(也许使用lambda)来完成它
一个声明?如:
y = lambda x,w:...


x = [1,2,3]
w = [4,5,6]
sum(a * b为(a,b)in zip(x,w))



32


谢谢Will,2.4表达式看起来非常好。


Suppose I have a list of n floats x and a list of n floats w and I want
to compute x[0]*w[0] + .. + x[n-1]*w[n-1].

Is there some elegant expression (perhaps using lambda) to have it done
in one statement ? As in :
y = lambda x,w : ...

I ask because the way I am doing it now :
y = 0
for i in range(0,n): y += x[i]*w[i]

doesn''t seem very pythonic :)

Thanks,
Andrei

解决方案

an*****@mail.dntis.ro wrote:

Suppose I have a list of n floats x and a list of n floats w and I want
to compute x[0]*w[0] + .. + x[n-1]*w[n-1].

Is there some elegant expression (perhaps using lambda) to have it done
in one statement ? As in :
y = lambda x,w : ...

I ask because the way I am doing it now :
y = 0
for i in range(0,n): y += x[i]*w[i]

doesn''t seem very pythonic :)


I''ll take a stab at that!

In Python 2.3

sum( [ _x * _w for _x, _w in zip( x, w ) ] )

or in 2.4

sum( _x * _w for _x, _w in zip( x, w ) )

You may want to use itertools.izip in place of zip if the lists are large.

Will McGugan


wrote:

Suppose I have a list of n floats x and a list of n floats w and I want
to compute x[0]*w[0] + .. + x[n-1]*w[n-1].

Is there some elegant expression (perhaps using lambda) to have it done
in one statement ? As in :
y = lambda x,w : ...


x = [1, 2, 3]
w = [4, 5, 6]
sum(a*b for (a,b) in zip(x, w))


32


Thanks Will, the 2.4 expression looks really nice.


这篇关于计算加权和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆