我在想在numpy中进行平均计算的最快方法是什么。我使用了以下代码进行实验:
import time
n = 10000
p = np.array([1] * 1000000)
t1 = time.time()
for x in range(n):
np.divide(np.sum(p), p.size)
t2 = time.time()
print(t2-t1)
3.9222593307495117
t3 = time.time()
for x in range(n):
np.mean(p)
t4 = time.time()
print(t4-t3)
5.271147012710571
我会认为np.mean会更快或者至少速度相当,然而看起来numpy函数的组合比np.mean更快。为什么numpy函数的组合更快呢?
np.sum()
比np.mean()
更快。 (np.divide
的调用是微不足道的,因为你只是给它两个数字作为输入,而不是数组。) 我必须检查这两个函数的底层实现才能理解原因。我发现令人惊讶的是,在幕后,np.mean()
实际上没有运行你的替代代码... - joanis