有人告訴我,Python 中的 double for 回圈很慢。然而,在深入研究Scipy.spatial.distance.cdist()的實作時,我發現它只是一個雙回圈,而不是一些聰明的 numpy 技巧。然而,許多答案(例如https://stackoverflow.com/a/62416370)建議使用cdist().
我的問題是:如果函式只是天真地迭代 O(n^2) 中的所有元素,為什么它仍然如此之快?
uj5u.com熱心網友回復:
_cdist_callable()在大多數情況下,不使用您指向的帶有兩個 for 回圈的函式。當您閱讀cdist()函式時,您可以看到它_cdist_callable()正在運行,例如當您提供自己的度量函式時。
在典型的情況下,當你在一個字串的形式提供度量:euclidean,chebyshev,cityblock等,C-優化的函式被用來代替。這些指標的那些 C 優化函式的“句柄”列在同一檔案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/314076.html
標籤:Python 表现 优化 scipy scipy-空间
上一篇:如果不存在,如何創建函式?
