首页 > 解决方案 > 我有两个列表,我需要从一个列表中选择一个随机样本,然后从第二个列表中选择相应的索引

问题描述

我有两个清单。一个带有样本数据,一个带有相应的标签。我需要从样本数据中随机挑选数据,但我也需要它们对应的标签。

这是我目前所做的:

amount = int(5000 * percent)
rawTrainingData = random.sample(rawTrainingData, amount)

原始训练数据是我的第一个列表。我的第二个列表是 trainingLabels,但我希望它与第一个列表相对应。

例如,如果您有这样的列表:

['A','B','C','D']
['1','2','3','4']

我想从第一个列表中选择两个随机元素,并从第二个列表中选择它们相应的索引。

例子:

['C','A']
['3','1']

['B','D']
['2','4']

最初,两个列表的长度相同,并且彼此对应。一旦我随机化第一个数组,我只希望它们保持对应。

标签: pythonrandom

解决方案


将两个列表压缩在一起,从压缩列表中选择一个项目:

import random

a = ['A','B','C','D']
b = ['1','2','3','4']

c = list(zip(a,b))

print(random.choice(c))

可以输出:

('A', '1')
('D', '4')

如果需要,请“解压缩”。并用于sample避免重复:

list1=[]
list2=[]
for a,b in random.sample(c,2):
    list1.append(a)
    list2.append(b)

可以输出:

>>> list1
['B', 'A']
>>> list2
['2', '1']
>>> 

推荐阅读