【发布时间】:2020-12-14 23:04:51
【问题描述】:
这是我的代码
import numpy as np
import time
from scipy.spatial import distance
y1=np.array([0,0,0,0,1,0,0,0,0,0])
y2=np.array([0. , 0.1, 0. , 0. , 0.7, 0.2, 0. , 0. , 0. , 0. ])
start_time = time.time()
for i in range(1000000):
distance.sqeuclidean(y1,y2)
print("--- %s seconds ---" % (time.time() - start_time))
---15.212640523910522 秒---
start_time = time.time()
for i in range(1000000):
np.sum((y1-y2)**2)
print("--- %s seconds ---" % (time.time() - start_time))
---8.381187438964844---秒
我认为 Scipy 已经过优化,所以它应该更快。
我们将不胜感激。
【问题讨论】:
-
scipy 在后台使用 numpy,因此它无法击败普通的 numpy(假设良好的 numpy 编码)。如果您检查
sqeuclidean的代码,您会看到它添加了一堆检查 + 额外选项,这通常会带来边际成本,但如果这个成本伤害了您并且您不关心额外的 scipy 优惠,那么不要使用它...
标签: python performance numpy scipy matrix-multiplication