xia*_*o 啸 28 python dot-product
我有两个列表,一个名为A,另一个名为B. A中的每个元素都是三元组,B中的每个元素只是一个数字.我想计算定义为的结果:
结果= A [0] [0]*B [0] + A [1] [0]*B [1] + ... + A [n-1] [0]*B [n-1]
我知道逻辑很简单,但如何用pythonic方式编写?
谢谢!
小智 41
Python 3.5有一个明确@的点积运算符,所以你可以写
a = A @ B
Run Code Online (Sandbox Code Playgroud)
代替
a = numpy.dot(A,B)
Run Code Online (Sandbox Code Playgroud)
use*_*368 30
import numpy
result = numpy.dot( numpy.array(A)[:,0], B)
Run Code Online (Sandbox Code Playgroud)
http://docs.scipy.org/doc/numpy/reference/
如果你想在没有numpy的情况下这样做,试试吧
sum( [a[i][0]*b[i] for i in range(len(b))] )
Run Code Online (Sandbox Code Playgroud)
小智 21
我最喜欢的Pythonic dot产品是:
sum([i*j for (i, j) in zip(list1, list2)])
Run Code Online (Sandbox Code Playgroud)
所以对于你的情况我们可以这样做:
sum([i*j for (i, j) in zip([K[0] for K in A], B)])
Run Code Online (Sandbox Code Playgroud)