Do tej pory wymyśliłem, jak zaimportować plik, utworzyć nowe pliki i zmienić losowo listę.
Mam problem z wybraniem losowo tylko 50 pozycji z listy do zapisania w pliku?
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')
Więc jeśli całkowity plik randomizacji to
example:
random_total = ['9','2','3','1','5','6','8','7','0','4']
Chciałbym 3 pliki (out_file1 | 2 | 3) z pierwszym losowym zestawem 3, drugim losowym zestawem 3 i trzecim losowym zestawem 3 (w tym przykładzie, ale ten, który chcę utworzyć, powinien mieć 50)
random_1 = ['9','2','3']
random_2 = ['1','5','6']
random_3 = ['8','7','0']
Więc ostatnie „4” nie zostaną uwzględnione, co jest w porządku.
Jak mogę wybrać 50 z listy, którą utworzyłem losowo?
A nawet lepiej, jak mogę wybrać losowo 50 z oryginalnej listy?
Odpowiedzi:
Jeśli lista jest w kolejności losowej, możesz po prostu wziąć pierwsze 50.
W przeciwnym razie użyj
random.sample
Tekst pomocy:źródło
random.sample
zwrócić również wybrane przez siebie indeksy?Prostym sposobem na wybranie losowych przedmiotów jest potasowanie, a następnie pokrojenie.
źródło
random.choice(mylist,3)
nie stworzyłoby dwóch rozłącznych zestawów, jak to zrobiono.Myślę, że
random.choice()
to lepsza opcja.funkcja zwraca tablicę 3 losowo wybranych wartości z listy
źródło
random.choice(mylist, 3, replace=False)
. Również mniej kłopotliwe w użyciuimport numpy as np
inp.random.choice(mylist, 3, replace=False)
Powiedzmy, że Twoja lista ma 100 elementów i chcesz wybrać 50 z nich w losowy sposób. Oto kroki, które należy wykonać:
Kod:
źródło