2013-10-21 15 views
14

Tôi có hai mảng numpy x và y, có chiều dài là 10.000. Tôi muốn vẽ một tập con ngẫu nhiên gồm 1.000 mục nhập của cả x và y. Có cách nào dễ dàng để sử dụng ngẫu nhiên, mẫu ngẫu nhiên nhỏ gọn (dân số, k) trên cả x và y để chọn cùng một chỉ mục tương ứng? (Các vectơ y và x được liên kết bởi một hàm y (x) nói.)Mẫu ngẫu nhiên Python của hai mảng, nhưng chỉ số phù hợp

Cảm ơn.

Trả lời

21

Bạn có thể sử dụng np.random.choice trên một mảng chỉ mục và áp dụng nó cho cả hai mảng:

idx = np.random.choice(np.arange(len(x)), 1000, replace=False) 
x_sample = x[idx] 
y_sample = y[idx] 
+0

Cảm ơn rất nhiều! Tôi đã không nhận ra bạn có thể gọi các mục của một mảng như thế x [idx]! – Cokes

+1

Vui vì nó đã giúp. Bây giờ bạn đã biết về nó, nó thực sự nhanh hơn (nhưng có lẽ ít rõ ràng hơn) nếu bạn làm điều đó như 'x_sample = np.take (x, idx)'. – Jaime

5

Chỉ cần nén hai với nhau và sử dụng rằng khi dân số:

random.sample(zip(xs,ys), 1000) 

Kết quả sẽ là 1000 đôi (2-tuples) các mục tương ứng từ xsys.

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