【发布时间】:2012-01-31 01:23:19
【问题描述】:
我想加快速度:
import random
ndim = 50000
for i in xrange(ndim):
random.sample([j for j in xrange(ndim) if j != i], 30000)
我正在考虑使用 NumPy,但不知道如何使用。
【问题讨论】:
-
您想出了哪些方法并尝试加快速度?
-
ndim的数量级是多少?
-
[j for j in xrange(ndim) if j != i]被range(0,i)+range(i+1,ndim)替换为ndim=50000大约快三倍。 -
之后你会如何处理这些数字?
-
我计算了一些数字。在相同的条件下(ndim = 50000,样本大小 = 30000,提取 5000 个样本,以保持简短),我建议的 NumPy 版本在我的计算机中运行大约 10 秒; Thomas Jung 提出的那个在大约 110 秒内完成,而使用 eumiro 建议的
range(i) + range(i+1, ndim)大约需要大约 120 秒,因为它需要在每个循环中再次构建整个范围
标签: python performance random sample xrange