2015-12-17 40 views
5

Hãy xem xét đoạn mã sautách hiệu quả dữ liệu bằng 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) 

Những gì tôi đang cố gắng để trong mã này là để chia ngẫu nhiên dữ liệu của tôi trong SalesSframe (tương tự như Pandas DataFrame) vào khoảng 4 phần bằng nhau.

Cách Pythonic/Efficient để đạt được điều này là gì?

+0

Bạn có thể làm rõ lý do tại sao điều này không phải là Pythonic hoặc hiệu quả như được viết? Một vấn đề tôi có thể thấy là tạo ra một số nếp gấp không phải là sức mạnh của hai lần, nhưng điều đó nghe có vẻ khác với những gì bạn đang yêu cầu. – papayawarrior

Trả lời

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

Bạn có vui lòng chia sẻ ý kiến ​​của mình về lý do tại sao tính năng này hiệu quả hơn không? Ngoài ra tôi thấy rằng bạn đang sử dụng '' 'NumPy''' Có ​​nghĩa là tôi cần phải chuyển' '' SFrame''' thành '' 'NumPy Array'''. Nó sẽ không thêm chi phí do chuyển đổi? –

+0

@ KhurramMajeed: Tôi chưa thử nghiệm để biết nếu nó nhanh hơn mã ban đầu của bạn, nhưng tôi xem mã này là hiệu quả và NumPythonic. Hãy thử xem nó có tăng tốc độ không. Nếu không, có thể gắn bó với bản gốc của bạn. Tôi chắc rằng bạn có thể chuyển đổi 'bộ' trở lại' Sframes' ở cuối nếu bạn cần. –

Các vấn đề liên quan