1 回答

TA貢獻1854條經驗 獲得超8個贊
性能較差的原因d2是組織數據框操作(索引檢查對齊等)的額外開銷。雖然我無法解釋每個細節,但您將從d1和d2的配置文件圖表中獲得基本概念.
d1和之間的差異d2會隨著維度的增加而變?。涸谖业臋C器上,2、3 和 4 維度的d2/d1執行時間比率分別為 2.6、2.1 和 1.8。所以我想足夠多的維度d2可能會比d1(未測試)更快。
計算歐幾里得距離的最快方法是使用cdistfrom SciPy:
from scipy.spatial import distance
def d3(cls, pt):
return pd.Series(distance.cdist(cls, [pt]).ravel())
它至少比維數快 5 倍,d1并且實際上不依賴于維數。以下是2、3 和 4 維的timeit輸出d1:d2d3
2D
1000 loops, best of 3: 1.37 ms per loop
100 loops, best of 3: 3.61 ms per loop
1000 loops, best of 3: 246 μs per loop
3D
100 loops, best of 3: 2.05 ms per loop
100 loops, best of 3: 4.28 ms per loop
1000 loops, best of 3: 234 μs per loop
4D
100 loops, best of 3: 2.69 ms per loop
100 loops, best of 3: 5.06 ms per loop
1000 loops, best of 3: 237 μs per loop
d1從原始 2D 案例的性能圖中可以看出,隨著數據幀大小的增加,和之間的差異d2也會變?。?/p>
添加回答
舉報