隨機選擇,我有一個名爲ARR具有N值的巨大np.array,並通過隨機選擇這些值的10%:反轉鍵在numpy的陣列
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矢量化的函數式編程。 –
是的,我知道,但我沒有發現每個谷歌的另一個解決方案。無法想到一個合理的搜索短語。 – user575736