Ich habe eine riesige np.array genannt arr mit N-Werte und 10% dieser Werte wählen zufällig von:Invert die zufällige Auswahl der Schlüssel in einem Array numpy
choice=random.sample(range(N), int(N*percent)) # percent has values 0-1
newarr=arr[choice]
N über 2 Millionen Werte sein könnte.
Eigentlich brauche ich auch ein Array mit den anderen 90% der Werte. Also im Moment habe ich die folgende verwenden, die sehr langsam ist:
def buildRevChoice(choice, nevents):
revChoice=[]
for i in range(N):
if not i in choice:
revChoice.append(i)
return revChoice
Können Sie sich eine Methode, dies zu zumachen?
Schnelle Optimierung: Erstellen Sie in 'buildRevChoice' ein' set' aus 'choice', um die Suche zu beschleunigen. –
Verwenden Sie keine Python-Schleifen für große Arrays, wenn Sie Leistung benötigen. Verwenden Sie die funktionale Programmierung von Python/Numpy und die Vektorisierung von Numpy. –
Ja, ich weiß, aber ich habe keine andere Lösung per Google gefunden. Konnte nicht an eine vernünftige Suchphrase denken. – user575736