在编写脚本时,我发现了numpy.random.choice函数。我实现了它,因为它比等价的if语句更加清晰。但是,在运行脚本后,我意识到它比if语句明显慢得多。
以下是一个最小可行示例(MWE)。第一种方法需要0.0秒,而第二种需要7.2秒。如果你增加i循环的规模,你会看到random.choice的速度变慢。
有人能否解释一下为什么random.choice要慢这么多呢?
以下是一个最小可行示例(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))
timeit
而不是单独使用time
。 - Marcin