我有一个数据集,它是一个列表,其元素又是一个列表。 例如,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算法。
答案 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]