据我所知,比其他人快.但可能会占用更多内存.
import random
from collections import Counter
def sample2(A,N):
distribution = [i for i, j in enumerate(A) for _ in xrange(j)]
sample = Counter(random.sample(distribution, N))
return [sample[i] for i in xrange(len(A))]
In [52]: A = np.random.randint(0, 100, 500)
In [53]: %timeit sample(A, 100) #Original
100 loops, best of 3: 2.71 ms per loop
In [54]: %timeit sample2(A, 100) #my function
1000 loops, best of 3: 914 µs per loop
In [55]: %timeit sample3(A, 100) #sftd function
100 loops, best of 3: 8.33 ms per loop
版权声明:本文为weixin_39851279原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。