Jusqu'à présent, j'ai compris comment importer le fichier, créer de nouveaux fichiers et randomiser la liste.
J'ai du mal à sélectionner seulement 50 éléments de la liste au hasard pour écrire dans un fichier?
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')
Donc, si le fichier de randomisation totale était
example:
random_total = ['9','2','3','1','5','6','8','7','0','4']
Je voudrais 3 fichiers (out_file1 | 2 | 3) avec le premier ensemble aléatoire de 3, le deuxième ensemble aléatoire de 3 et le troisième ensemble aléatoire de 3 (pour cet exemple, mais celui que je veux créer devrait en avoir 50)
random_1 = ['9','2','3']
random_2 = ['1','5','6']
random_3 = ['8','7','0']
Donc, le dernier «4» ne sera pas inclus, ce qui est bien.
Comment puis-je sélectionner 50 dans la liste que j'ai randomisée?
Mieux encore, comment pourrais-je sélectionner 50 au hasard dans la liste d'origine?
Réponses:
Si la liste est dans un ordre aléatoire, vous pouvez simplement prendre les 50 premiers.
Sinon, utilisez
random.sample
Texte d'aide:la source
random.sample
retour également des indices qu'il a choisis?Un moyen simple de sélectionner des éléments aléatoires consiste à mélanger puis à découper.
la source
random.choice(mylist,3)
ne créerait pas deux ensembles disjoints comme cela.Je pense que
random.choice()
c'est une meilleure option.la fonction renvoie un tableau de 3 valeurs choisies au hasard dans la liste
la source
random.choice(mylist, 3, replace=False)
. Aussi moins déroutant à utiliserimport numpy as np
etnp.random.choice(mylist, 3, replace=False)
Supposons que votre liste comporte 100 éléments et que vous souhaitiez en choisir 50 de manière aléatoire. Voici les étapes à suivre:
Code:
la source