计算加权和 [英] computing a weighted sum
问题描述
假设我有一个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屋!