Пока я понял, как импортировать файл, создавать новые файлы и рандомизировать список.
У меня возникли проблемы с выбором случайным образом только 50 элементов из списка для записи в файл?
def randomizer(input,output1='random_1.txt',output2='random_2.txt',output3='random_3.txt',output4='random_total.txt'):
#Input file
query=open(input,'r').read().split()
dir,file=os.path.split(input)
temp1 = os.path.join(dir,output1)
temp2 = os.path.join(dir,output2)
temp3 = os.path.join(dir,output3)
temp4 = os.path.join(dir,output4)
out_file4=open(temp4,'w')
random.shuffle(query)
for item in query:
out_file4.write(item+'\n')
Итак, если общий файл рандомизации был
example:
random_total = ['9','2','3','1','5','6','8','7','0','4']
Я бы хотел 3 файла (out_file1 | 2 | 3) с первым случайным набором из 3, вторым случайным набором из 3 и третьим случайным набором из 3 (для этого примера, но тот, который я хочу создать, должен иметь 50)
random_1 = ['9','2','3']
random_2 = ['1','5','6']
random_3 = ['8','7','0']
Таким образом, последняя «4» не будет включена, и это нормально.
Как мне выбрать 50 из случайного списка?
Более того, как я мог выбрать 50 случайным образом из исходного списка?
Ответы:
Если список составлен в случайном порядке, вы можете просто взять первые 50.
В противном случае используйте
random.sample
текст справки:источник
random.sample
вернуть также выбранные им индексы?Один из простых способов выбрать случайные элементы - это перемешать, а затем нарезать.
источник
random.choice(mylist,3)
не приведет к созданию двух непересекающихся наборов, как это было.Думаю
random.choice()
, это лучший вариант.функция возвращает массив из 3-х случайно выбранных значений из списка
источник
random.choice(mylist, 3, replace=False)
. Также менее запутанный в использованииimport numpy as np
иnp.random.choice(mylist, 3, replace=False)
Допустим, в вашем списке 100 элементов, и вы хотите выбрать 50 из них случайным образом. Вот следующие шаги:
Код:
источник