2011-10-20 46 views
1
import numpy 

def euclideanClassification(punto1, punto2): 
    return (numpy.dot(punto2, punto1) - ((1.0/2.0) * numpy.dot(punto1, punto1))) 

我试图改善这个功能的性能,但我不知道如何。你会如何提高这个功能的性能?

该函数是用于模式识别的欧几里德距离的变体。

+1

'punto1'和'punto2'的尺寸是多少? – NPE

回答

3

如果我没有记错,这个公式应该是相同的:

numpy.dot(punto2 - 0.5 * punto1, punto1) 

,但如果你把它写像这样保存三次乘法,所以理论上它应该是稍快。

0

您可以使用Cython进行该任务。

[Cython]是一种基于Python的编程语言,其额外的语法允许可选的静态类型声明。它的目标是成为[Python]语言的超集,从而为其提供高级,面向对象,功能和动态编程。源代码被转换为优化的C/C++代码并编译为Python扩展模块。这允许非常快速的程序执行以及与外部C库的紧密集成,同时保持Python语言众所周知的高程序员生产力。