随机选择列表与替换

rau*_*aul 7 python random numpy

我有一个列表列表,如下所示:

a = [[1,2],[2,3]]
Run Code Online (Sandbox Code Playgroud)

我想创建一个随机列表,替换给定的大小a.该numpy.random.choice()方法仅接受1D数组.我可以编写自己的函数来执行此操作,但是已经有一种优化的方法吗?

预期产量:

[[1,2],[1,2],[2,3],[2,3]] 
// the size (4 here) has to be a parameter passed to the function
Run Code Online (Sandbox Code Playgroud)

Bla*_*ing 11

您可以重复调用标准库random.choice().没必要numpy.

>>> list_of_lists = [[1, 2], [2, 3]]
>>> sample_size = 4
>>> [random.choice(list_of_lists) for _ in range(sample_size)]
[[1, 2], [2, 3], [1, 2], [1, 2]]
Run Code Online (Sandbox Code Playgroud)

这是一种替代方案random.sample(),无需替换,可让您选择大于原始种群大小的"样本".


AGS*_*AGS 1

使用numpy:

size = 4
a = np.array([[1,2],[2,3]])
b = np.random.randint(len(a), size = size)
a[b,:]

Out[93]:
array([[2, 3],
       [2, 3],
       [2, 3],
       [1, 2]])
Run Code Online (Sandbox Code Playgroud)