Skip to main content
 首页 » 编程设计

Python;实现逐元素向量乘法的最有效方法

2025年05月04日19softidea

我需要函数聚合器,它将两个列表减少到一个总数。 “项目”应该是 bool 值的向量。

所以,我写了这些函数:

def element_wise_multiplication(weights, items): 
    return map(lambda x, y: x * y, weights, items) 
 
def total(weights, items): 
    return sum(element_wise_multiplication(weights, items)) 

它们在我看来还不错,但问题是分析器显示其中包含 lambda 的行负责 95% 的运行时间,因此它的性能几乎无法接受。

最有效的实现方式是什么?

附言我知道 NumPy 的数组,但我想在这个数组上使用 PyPy。或者在这种情况下不值得使用它?

请您参考如下方法:

你可以像这样用一个生成器来处理这个问题:

from itertools import izip 
value = sum((x * y) for x, y in izip(weights, items)) 

izip 完成与内置 zip 相同的事情,但没有内存开销。