Mam ogromny np.array nazwie arr z wartości N i wybrać 10% tych wartości losowo przez:Odwrócić losowy wybór kluczy w numpy tablicy
choice=random.sample(range(N), int(N*percent)) # percent has values 0-1
newarr=arr[choice]
N może być ponad 2 mln wartości.
Właściwie potrzebuję również tablicy z pozostałymi 90% wartości. W tej chwili używam następującego, który jest bardzo powolny:
def buildRevChoice(choice, nevents):
revChoice=[]
for i in range(N):
if not i in choice:
revChoice.append(i)
return revChoice
Czy możesz wymyślić metodę, aby to wzmocnić?
Szybka optymalizacja: W 'buildRevChoice', utwórz' set' z 'choice', aby przyspieszyć wyszukiwanie. –
W ogóle nie używaj pętli Pythona do dużych tablic, jeśli potrzebujesz wydajności. Użyj funkcjonalnego programowania Pythona/numpy i wektoryzacji numpy. –
Tak, wiem, ale nie znalazłem innego rozwiązania dla każdego google. Nie mogłem wymyślić rozsądnej frazy wyszukiwania. – user575736