2013-10-21 10 views
14

Ho due array numpy xey che hanno una lunghezza di 10.000. Vorrei tracciare un sottoinsieme casuale di 1.000 voci di entrambi xe y. C'è un modo semplice per usare il random.sample (popolazione, k) bello e compatto su entrambi xey per selezionare gli stessi indici corrispondenti? (I vettori ye x sono collegati da una funzione y (x) dire.)Esempio casuale di Python di due array, ma indici corrispondenti

Grazie.

risposta

21

È possibile utilizzare np.random.choice su un array indice e applicarlo a entrambi gli array:

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

Grazie mille! Non mi ero reso conto che potevi chiamare voci di un array come x [idx]! – Cokes

+1

Felice di averlo aiutato. Ora che lo sai, è in realtà più veloce (ma probabilmente meno chiaro) se lo fai come 'x_sample = np.take (x, idx)'. – Jaime

5

Appena zip le proposte e utilizzarla come la popolazione:

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

Il risultato sarà 1000 paia (2-tuple) di voci corrispondenti da xs e ys.

Problemi correlati