在编写脚本时,我发现了 numpy.random.choice 函数。我实现了它,因为它比等效的 if 语句要干净得多。但是,在运行脚本后,我意识到它比if 语句慢得多。
以下是MWE。第一种方法需要 0.0 秒,而第二种方法需要 7.2 秒。如果你扩大i循环,你会看到 random.choice 变慢的速度。
谁能评论为什么 random.choice 这么慢?
import numpy as np
import numpy.random as rand
import time as tm
#-------------------------------------------------------------------------------
tStart = tm.time()
for i in xrange(100):
for j in xrange(1000):
tmp = rand.rand()
if tmp < 0.25:
var = 1
elif tmp < 0.5:
var = -1
print('Time: %.1f s' %(tm.time() - tStart))
#-------------------------------------------------------------------------------
tStart = tm.time()
for i in xrange(100):
for j in xrange(1000):
var = rand.choice([-1, 0, 1], p = [0.25, 0.5, 0.25])
print('Time: %.1f s' %(tm.time() - tStart))