import numpy
def euclideanClassification(punto1, punto2):
return (numpy.dot(punto2, punto1) - ((1.0/2.0) * numpy.dot(punto1, punto1)))
我試圖改善這個功能的性能,但我不知道如何。你會如何提高這個功能的性能?
該函數是用於模式識別的歐幾里德距離的變體。
import numpy
def euclideanClassification(punto1, punto2):
return (numpy.dot(punto2, punto1) - ((1.0/2.0) * numpy.dot(punto1, punto1)))
我試圖改善這個功能的性能,但我不知道如何。你會如何提高這個功能的性能?
該函數是用於模式識別的歐幾里德距離的變體。
如果我沒有記錯,這個公式應該是相同的:
numpy.dot(punto2 - 0.5 * punto1, punto1)
,但如果你把它寫像這樣保存三次乘法,所以理論上它應該是稍快。
您可以使用Cython進行該任務。
[Cython]是一種基於Python的編程語言,其額外的語法允許可選的靜態類型聲明。它的目標是成爲[Python]語言的超集,從而爲其提供高級,面向對象,功能和動態編程。源代碼被轉換爲優化的C/C++代碼並編譯爲Python擴展模塊。這允許非常快速的程序執行以及與外部C庫的緊密集成,同時保持Python語言衆所周知的高程序員生產力。
'punto1'和'punto2'的尺寸是多少? – NPE