2015-12-17 12 views
5

Betrachten Sie folgenden CodeEffiziente Aufteilung von Daten in Python

one, two = sales.random_split(0.5, seed=0) 
set_1, set_2 = one.random_split(0.5, seed=0) 
set_3, set_4 = two.random_split(0.5, seed=0) 

Was ich versuche, in diesem Code zufällig in SalesSframe meine Daten aufgeteilt in etwa 4 gleiche Teile (die Pandas Datenrahmen ähnlich ist).

Was ist ein Pythonic/Efficient Weg, dies zu erreichen?

+0

Können Sie erklären, warum dies nicht Pythonic oder effizient wie geschrieben ist? Ein Problem, das ich sehen kann, ist das Erstellen einer Reihe von Falten, die keine Zweierpotenz sind, aber das klingt anders als das, was Sie fragen. – papayawarrior

Antwort

2
np.random.seed(0) 
np.random.shuffle(arr) # in-place 
sets = np.array_split(arr, 4) 
+0

Würden Sie bitte Ihre Kommentare teilen, warum dies effizienter ist? Ich sehe auch, dass Sie '' 'NumPy''' verwenden, was bedeutet, dass ich' '' SFrame''' in '' 'NumPy Array''' umwandeln muss. Wird aufgrund der Konvertierung kein Overhead hinzugefügt? –

+0

@KhurramMajeed: Ich habe nicht getestet, ob es schneller als Ihr ursprünglicher Code ist, aber ich halte diesen Code für effizient und NumPythonic. Probieren Sie es aus und sehen Sie, ob es die Dinge beschleunigt. Wenn nicht, bleiben Sie vielleicht bei Ihrem Original. Ich bin sicher, dass Sie die 'sets' am Ende wieder in 'Sframes' konvertieren können, wenn Sie es brauchen. –

Verwandte Themen