2012-03-27 17 views
4

Mögliche Duplizieren:
How do I randomly select an item from a list using Python?zufälliges Auswählen Elemente aus einem Array Python

Ich habe zwei Arrays pool_list_X, pool_list_Y. Beide haben ein Nummernfeld als Element in der Liste. Also im Grunde

pool_list_x[0] = [1 2 3 4] # a multidimensional numpy array. 

und jedes Element von pool_list_x hat entsprechendes Element in pool_list_y

which is to say, that pool_list_x[i] corresponds to pool_list_y[i] 

Jetzt. wenn ich zufällig 10 Elemente von list_x auswählen muss (und damit die entsprechenden Elemente zu list_y). Wie mache ich das. Ich kann mir eine sehr naive Art vorstellen .. zufallsgenerierte Zahlen. und so .. aber das ist nicht sehr effizient .. was ist der pythonische Weg, dies zu tun. Dank

+0

Haben Sie an die Standardbibliothek gedacht? Vielleicht googeln oder suchen Stackoverflow? – Marcin

+0

Wie ich schon sagte, ich kenne den naiven Weg ... aber in diesem Fall ... müsste ich eine Zufallszahl erzeugen und auf Kollisionen prüfen, um sicherzustellen, dass die gleiche Zahl nicht zweimal erzeugt wird und 10 nur ein Beispiel ist. Ich möchte wie 100k Zufallszahlen generieren .. diese Methode wird nicht ausreichen. – Fraz

+1

ist das nicht wahr für jede andere Frage für Stackoverflow? – Fraz

Antwort

19

nicht sicher, ob ich dir hundertprozentig verstehen, aber ich denke, mit zip und random.sample funktionieren könnte:

import random 
random.sample(zip(list_a,list_b), 10) 

einige kurze Erklärungen:

  • zip wird eine Liste von Paaren erstellen dh es stellt sicher, dass Sie entsprechende Elemente auswählen - wenn Sie eines auswählen, erhalten Sie automatisch das andere (Zip([1,2,3],[4,5,6]) = [(1,4),(2,5),(3,6)])
  • random.sample(l,n) wählt zufällig n Elemente aus einer Liste l
+1

:) Unsere Beispiele sind sehr ähnlich, außer dass ich 'random.choice()' anstelle von 'random.sample()' gewählt habe. Ich frage mich, welcher ist näher, was OP will;) – Tadeck

4

Es gibt eine Funktion erlaubt Ihnen das Zufallselement der angegebenen Reihenfolge zu bekommen:

import random 
my_choice = random.choice(my_sequence) 

Details siehe the documentation.

Verwandte Themen