【发布时间】:2014-05-22 13:36:44
【问题描述】:
我有一个名为 arr 的巨大 np.array 有 N 个值,并通过以下方式随机选择其中 10% 的值:
choice=random.sample(range(N), int(N*percent)) # percent has values 0-1
newarr=arr[choice]
N 可能超过 200 万个值。
实际上我还需要一个包含其他 90% 值的数组。所以目前我使用以下非常慢的:
def buildRevChoice(choice, nevents):
revChoice=[]
for i in range(N):
if not i in choice:
revChoice.append(i)
return revChoice
你能想出一种方法来固定它吗?
【问题讨论】:
-
快速优化:在
buildRevChoice中,从choice创建一个set以加快查找速度。 -
如果您需要性能,请不要对大数组使用 python 循环。使用python/numpy的函数式编程和numpy的向量化。
-
是的,我知道,但我没有为每个谷歌找到另一个解决方案。想不出一个合理的搜索词组。