从列表中提取元素

时间:2018-11-06 03:05:12

标签: python list

我有一个数据集,它是一个列表,其元素又是一个列表。 例如,myList = [[1,2,3],[4,5,6],.......,[7,8,9],[11,12,14]]。我想从此列表中随机选择一堆元素,例如[4,5,6]和[11,12,14]。如何实现呢?

我尝试了以下操作:

# Suppose List_1 has 1000 elements(lists) and I want 100 elements
indices = np.random.choice(myList, size = 100, replace = None )
new_list = myList[indices]

显然,以上代码不起作用。错误消息是:“列表索引必须是整数或切片,而不是列表”

有人可以帮我吗?我的实际意图是从原始数据集(列表)中采样数据点(列表),以创建一批数据来训练ML算法。

3 个答案:

答案 0 :(得分:2)

使用random.sample,它带有一个附加参数来指定要从总体中选择的随机项目的数量:

import random

myList = [[1,2,3],[4,5,6],[7,8,9],[11,12,14]]
print(random.sample(myList, 2))

答案 1 :(得分:0)

您可以考虑使用随机变量-随机变量生成器,就像您要选择任意数量的列表元素一样,@ Austin建议使用sample并随机使用,但合理的选择是随机的。

使用random.sample是...

>>> lst
[['15', '48', '698'], ['10', '32', '66'], ['78', '501', '23']]

>>> random.sample(population=lst, k=2)
[['78', '501', '23'], ['15', '48', '698']]

使用时 random.choices

>>> random.choices(population=lst, k=2)
[['15', '48', '698'], ['15', '48', '698']]

注意

在此处查看The random Doc

  

random.sample(population,k)返回唯一元素的k个长度列表   从总体序列或集合中选择。用于随机抽样   无需更换。

     

random.choices(人口,权重=无,*,cum_weights =无,k = 1)   返回从人口中选择的k大小的元素列表   替代。如果填充为空,则引发IndexError。

答案 2 :(得分:0)

您在最后一行有一个错误,但我仍然认为它与您的预期最接近(使用numpy)

indices = np.random.choice(range(len(myList)), size = 100, replace = None )
new_list = myList[indices]