2015-12-17 20 views
5

Rozważmy następujący kodEfektywne rozdzielanie danych w Pythonie

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) 

Co staram się w ten kod jest losowo podzielone moich danych w SalesSframe (który jest podobny do Pandy DataFrame) do około 4 równe części.

Co to jest Pythonowy/Wydajny sposób, aby to osiągnąć?

+0

Czy możesz wyjaśnić, dlaczego nie jest to Pythoniczne lub wydajne, jak napisane? Jednym z problemów, jaki widzę, jest tworzenie wielu fałd, które nie są potęgą dwójki, ale to brzmi inaczej niż o to pytasz. – papayawarrior

Odpowiedz

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

Czy mógłbyś podzielić się swoimi komentarzami, dlaczego jest to bardziej efektywne? Również widzę, że używasz '' 'NumPy''' Co oznacza, że ​​muszę przekonwertować' '' SFrame''' na '' NumPy Array'''. Czy nie doda narzutów z powodu konwersji? –

+0

@KhurramMajeed: Nie testowałem, aby wiedzieć, czy jest on szybszy niż oryginalny kod, ale uważam ten kod za wydajny i NumPythonic. Spróbuj i sprawdź, czy przyspieszy to. Jeśli nie, może trzymać się oryginału. Jestem pewien, że możesz przekonwertować 'sets' z powrotem na' Sframes' na końcu, jeśli potrzebujesz. –

Powiązane problemy