Hasta ahora he descubierto cómo importar el archivo, crear nuevos archivos y aleatorizar la lista.
¿Tengo problemas para seleccionar solo 50 elementos de la lista al azar para escribir en un archivo?
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')
Entonces, si el archivo de aleatorización total fue
example:
random_total = ['9','2','3','1','5','6','8','7','0','4']
Quisiera 3 archivos (out_file1 | 2 | 3) con el primer conjunto aleatorio de 3, el segundo conjunto aleatorio de 3 y el tercer conjunto aleatorio de 3 (para este ejemplo, pero el que quiero crear debería tener 50)
random_1 = ['9','2','3']
random_2 = ['1','5','6']
random_3 = ['8','7','0']
Por lo tanto, el último '4' no se incluirá, lo cual está bien.
¿Cómo puedo seleccionar 50 de la lista que asigné al azar?
Aún mejor, ¿cómo podría seleccionar 50 al azar de la lista original?
Respuestas:
Si la lista está en orden aleatorio, puede tomar los primeros 50.
De lo contrario, use
random.sample
texto de ayuda:fuente
random.sample
devolver también los índices que ha elegido?Una manera fácil de seleccionar elementos aleatorios es barajar y luego cortar.
fuente
random.choice(mylist,3)
no crearía dos conjuntos disjuntos como esto lo hizo.Creo que
random.choice()
es una mejor opción.la función devuelve una matriz de 3 valores elegidos al azar de la lista
fuente
random.choice(mylist, 3, replace=False)
. También menos confuso de usarimport numpy as np
ynp.random.choice(mylist, 3, replace=False)
Digamos que su lista tiene 100 elementos y desea elegir 50 de ellos de forma aleatoria. Estos son los pasos a seguir:
Código:
fuente