你会如何提高这个功能的性能?

时间:2011-10-20 14:01:39

标签: python performance numpy distance

import numpy

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

我正在尝试提高此功能的性能,但我不知道如何。

此函数是模式识别中使用的欧几里德距离的变体。

2 个答案:

答案 0 :(得分:3)

如果我没弄错的话,那个公式应该等同于:

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

但是如果你这样写它就可以节省三次乘法,所以理论上它应该稍快一点。

答案 1 :(得分:0)

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

  

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