2012-03-27 107 views
4

可能重複:
How do I randomly select an item from a list using Python?從陣列蟒隨機選擇項

我有兩個陣列pool_list_X,pool_list_Y。在列表中都有一個numpy數組作爲元素。 所以基本上

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

和pool_list_x的每一個元素在pool_list_y相應的元素現在

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

。如果我必須從list_x中隨機選擇10個元素(因此相應的元素爲list_y)。我該怎麼做呢。 我可以想一個非常天真的方式..隨機生成數字。和東西..但這不是很有效率..什麼是pythonic方式來做到這一點。 感謝

+0

你想過看標準庫嗎?也許谷歌搜索或搜索stackoverflow? – Marcin 2012-03-27 17:49:22

+0

就像我說的,我知道天真的方式..但在這種情況下..我將不得不生成一個隨機數並檢查碰撞,以確保相同的數字不會產生兩次,10只是一個例子..我想生成像100k隨機數字..這種方法不足夠。 – Fraz 2012-03-27 17:52:37

+1

是不是這個真正的每個其他問題的stackoverflow? – Fraz 2012-03-27 18:09:04

回答

19

不知道如果我理解你百分之百的,但我想用ziprandom.sample可能的工作:

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

一些簡短解釋:

  • zip將創造對的列表,即它確保你選擇相應的元素 - 如果你選擇一個,你會自動得到另一個(Zip([1,2,3],[4,5,6]) = [(1,4),(2,5),(3,6)]
  • random.sample(l,n)隨機選擇從列表l
+1

:)我們的例子非常相似,只是我選擇了'random.choice()'而不是'random.sample()'。我想知道哪一個更接近OP的要求;) – Tadeck 2012-03-27 17:53:03

4

有讓您獲得給定序列的隨機元素的功能n元素:

import random 
my_choice = random.choice(my_sequence) 

詳見the documentation