2012-03-27 94 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